home *** CD-ROM | disk | FTP | other *** search
/ CDUTIL 13 / CDUTIL #13 Julio 1995.iso / windows / corel5sp / custom / userproc.ps < prev    next >
Encoding:
Text File  |  1994-09-30  |  79.5 KB  |  3,325 lines

  1. %%  --------------------------------------------------------------------
  2. %%  ----------- ARCHIVO DE FUNCIONES DEFINIDAS POR EL USUARIO ------------------
  3. %%  ------El nombre del archivo es: USERPROC.PS---------------------------------
  4. %% NOTAS:
  5.  
  6.  
  7.     Hay dos tipos de funciones definidas por el usuario: "Punto" y "Relleno"
  8.  
  9.     - Una funci≤n "Punto" es aquella que toma dos argumentos de coma flotante,
  10.         X e Y, ambas entre -1 y 1,  y devuelve un solo valor real entre
  11.         -1 y 1 (de lo contrario ocurre un error de ejecuci≤n) llamado Z.
  12.         El dominio es un rectßngulo de 2 X 2 que se asignarß (durante la impresi≤n)
  13.         a cada celda de la trama de medios tonos.
  14.         La representaci≤n en 3-D de la funci≤n Z = f(X,Y) (no necesita
  15.         ser continua, pero  f(X,Y) debe estar definida para todo -1 <= X, Y <= 1 )
  16.         es una superficie cuyos puntos mßs altos se blanquearßn primero en cada 
  17.         celda.
  18.         Para mßs informaci≤n sobre funciones de punto, consulte la secci≤n 4.8 de
  19.         POSTSCRIPT LANGUAGE REFERENCE MANUAL (de Adobe Systems
  20.         Inc.).
  21.  
  22.     - Una funci≤n de Relleno toma entre 0 y 5 argumentos.  Supone que ya hay un
  23.         trayecto dibujado (puede estar cerrado o no, puede estar desconectado) e
  24.         intenta rellenarlo.
  25.         Una funci≤n de relleno simple puede ser:
  26.                 /MiRelleno1 { %0 parßmetros
  27.                     0,70 relleno de gris } bind def
  28.         Para rellenos mßs complejos, la funci≤n de relleno puede referirse al
  29.         recuadro de limitaci≤n del objeto actual que siempre viene definido en
  30.         unidades de CORELDRAW (1/1000) de una pulgada y en relaci≤n al origen
  31.         l≤gico de CORELDRAW.
  32.  
  33.         Pueden usarse siempre Bbllx, Bblly, Bburx, Bbury globales para obtener las
  34.         esquinas inf. izquierda y sup. derecha del recuadro de limitaci≤n del objeto.
  35.  
  36.         NOTA 1: Para objetos con trayectos desconectados como palabras con 
  37.         m·ltiples letras y lφneas y curvas desconectadas, se llamarß a la funci≤n de
  38.          relleno un vez para cada subtrayecto. No obstante, el recuadro de limitaci≤n 
  39.         permanece igual para cada llamada.
  40.  
  41.         NOTA 2: Cuando CORELDRAW la llama, la funci≤n de relleno estarß dentro
  42.         de una secuencia "gsave - grestore" para que la funci≤n de relleno no
  43.         necesite restaurar es estado de los grßficos original. Ademßs, la funci≤n de
  44.         relleno no debe hacer ninguna suposici≤n sobre el estado actual de los 
  45.         grßficos que no sea la siguiente:    - El ßngulo de reotaci≤n actual es 0                                 (-90 para pßginas apaisadas)
  46.                         - La unidad actual es el MIL (1/1000 pulg.)
  47.                         - Hay un trayecto listo para rellenar.
  48.  
  49. SINTAXIS PARA ESTE ARCHIVO:
  50.     - Una definici≤n de funci≤n comienza con una lφnea de comentarios
  51. "%@Spot" o
  52.     "%@Fill" que comience en la lφnea uno indicando que se va a definir una
  53.     funci≤n punto o relleno.  Se ignora el recordatorio de esta lφnea.
  54.     - La lφnea que la sigue inmediatamente debe comenzar con un nombre de funci≤n
  55.     inmediatamente precedido por una '/' (barra) en la columna uno
  56.     (ej: /MiPrimerRelleno).
  57.     Este nombre se usarß para identificar el rellon en el archivo .CDR y los archivos
  58.     .EPS. El recordatorio de una lφnea indica el nombre que aparece en la ventana de
  59.     dißlogo de la funci≤n personalizada de CORELDRAW y los parßmetros de usuario
  60.     para esa funci≤n: Las funciones de punto no admiten parßmetros de usuario, s≤lo un
  61.     nombre de presentaci≤n. Las funciones de punto admiten de 0 a 5 parßmetros
  62.     especificados de la forma siguiente:
  63.  
  64.             %<nombrefnusuario>,<N║deparam> ,<nombreparam1>=<val.pordefecto1>,<nombreparam2>=<val.pordefecto2>,...
  65.  
  66. donde: <nombrefnusuario> es el nombre que se muestra en la lista de selecci≤n  PSFILL 
  67.                 , es la cadena que se traduce a las versiones de idiomas 
  68.                 extranjeros
  69.              <N║deparam> es un valor entero entre 0 y 5
  70.              <nombreparamX> es el significado del parßm. X (hasta 20 carac.)
  71.              <val.pordefectoX> es el valor numΘrico por defecto para ese parßm. (siempre
  72.                 entero)
  73. El n·mero de nombres de parßmetros y valore por defecto debe concordar siempre con el valor <N║deparam>.
  74. Antes de llamar a la funci≤n de relleno, el programa principal debe apilar los parßmetros en el mismo orden en el que se especificaron.
  75.  
  76. TODOS LOS PARAMETROS SON ENTEROS.
  77.  
  78. EJEMPLO: una funci≤n de relleno con 3 parßmetros
  79.  
  80. %@Fill
  81. /MiFunci≤n  %MiNombredeFunci≤n,3,GrisFondo=100,Gris1erPlano=50,Densidad=4
  82. {% cuando se llama, PILA= <GrisFondo> <Gris1erPlano> <Densidad>
  83.         /Interc. densidad 1 10 def InRange        % validar densidad
  84.         /Interc. Gris1er.Plano 0 100 def InRange    % validar gris 1er. plano
  85.         /Interc. GrisFondo 0 100 def InRange        % validar gris fondo
  86.             ...
  87.             } bind def
  88.  
  89.             NOTA: la funci≤n PostScript 'InRange'.
  90.             El programa principal no puede validar la gama de los parßmetros.
  91.             La funci≤n de relleno puede usar la funci≤n: 'InRange' que se
  92.             describe a continuaci≤n:
  93.                 <valor> <mφn> <mßx> InRange  ==>  <valnuevo>
  94.             InRange toma 3 argumentos from de la pila y se asegura de que 
  95.             <valor> estΘ entre <mφn> y <mßx>. Si es asφ, deja a <valor>
  96.             en la pila, de lo contrario, introduce un <valnuevo> vßlido en la pila.
  97.  
  98.             Nota: La funci≤n PostScript 'wDstChck' .
  99.             En el caso de que un valor mßximo sea igual a uno mφnimo, la
  100.             diferencia serß nula y en la mayorφa de los casos provocarß una
  101.             divisi≤n por cero.
  102.             La funci≤n de relleno puede usar la funci≤n que se proporciona:
  103.             'wDstChck'  que se describe a continuaci≤n:
  104.                 <ValorMßx> <ValorMφn> wDstChck ==> ValorMßx o ValMßx+1
  105.                 Si los dos valores son iguales, a±ada 1 al ValorMßx y dΘjelo en la
  106.             pila deje el ValorMßx sin cambiar en la pila.
  107.  
  108.     - Las siguientes n lφneas contienen el cuerpo de la funci≤n encerrada entre  llaves y
  109.     seguida de la secuencia "bin def".
  110.     - CORELDRAW no analiza el contenido del cuerpo. Una definici≤n se termina 
  111.     cuando se lee la siguiente secuencia '%@..." o al final del archivo.
  112.     - Las lφneas no debe exceder 150 caracteres de longitud..
  113.     - Los nombres de funci≤n no deben exceder los 20 caracteres.
  114.     - Los nombres de parßmetro no deben exceder los 20 caracteres..
  115.     - No hay lφmite para el n·mero de lφneas de cada funci≤n.
  116.  
  117.  
  118. %@Spot
  119. /Dot2 %Punto2
  120.         { %def --SPOT FUNCTION : DOT2: black around cells
  121.         dup mul exch dup mul add 1 sub
  122.         } bind def
  123.  
  124. %@Spot
  125. /OutCircleBlk %CirExtNeg
  126.         { %def --SPOT FUNCTION : OUTCIRCLE: empty black circles
  127.         dup mul exch dup mul add
  128.         0.6 exch sub abs -0.5 mul
  129.         } bind def
  130.  
  131. %@Spot
  132. /OutCircleWhi %CirExtBlan
  133.         { %def --SPOT FUNCTION : OUTCIRCLE: empty black circles
  134.         dup mul exch dup mul add
  135.         0.6 exch sub abs 0.5 mul
  136.         } bind def
  137.  
  138. %@Spot
  139. /Diamond %Diamante
  140.         { %def --SPOT FUNCTION : DIAMOND
  141.         abs exch abs add 1 exch sub
  142.         } bind def
  143.  
  144. %@Spot
  145. /Diamond2 %Diamante2
  146.         { %def --SPOT FUNCTION : DIAMOND2
  147.                 abs exch abs 2 copy add .75
  148.                 le {dup mul exch dup mul add 1
  149.                 exch sub} {2 copy add 1.25 
  150.                 le {.85 mul add 1 exch sub} 
  151.                 {1 sub dup mul exch 1 sub dup mul
  152.                 add 1 sub} ifelse} ifelse
  153.         } bind def
  154.  
  155. %@Spot
  156. /MicroWaves %MicroOndas
  157.         { %def --SPOT FUNCTION : MICROWAVES
  158.         /wy exch def
  159.         180 mul cos 2 div wy dup dup dup mul mul sub mul wy add
  160.         180 mul cos
  161.         } bind def
  162.  
  163. %@Spot
  164. /Grid %Rejilla
  165.         { % UNA REJILLA CUADRADA
  166.         2 copy
  167.         abs exch abs
  168.         gt {exch} if
  169.         pop 2 mul 1 exch sub 3.5 div
  170.         } bind def
  171.  
  172. %@Spot
  173. /Lines %Lφneas
  174.         { % LINEAS RECTAS
  175.         pop abs 2 mul 1 exch sub
  176.         } bind def
  177.  
  178. %@Spot
  179. /Star %Estrella
  180.      {
  181.      abs exch abs
  182.      2 copy gt {exch} if
  183.      1  sub
  184.     dup 0 eq {0.01 add}if
  185.      atan 360 div
  186.      } bind def
  187.  
  188. %@Spot
  189. /Euclidean %Euclideana
  190.         { %def --SPOT FUNCTION : EUCLIDEANA composite dot
  191.                 abs exch abs
  192.                 2 copy add 1
  193.                 gt {1 sub dup mul
  194.                 exch 1 sub dup mul 
  195.                 add 1 sub} {dup mul exch
  196.                 dup mul add 1 exch sub}
  197.                 ifelse
  198.         } bind def
  199.  
  200. %@Spot
  201. /Rhomboid %Romboide
  202.              { %def --SPOT FUNCTION : ROMBOIDE
  203.                 abs exch abs .8
  204.                 mul add 2 div
  205.         } bind def
  206.  
  207. %@Spot
  208. /Elliptical %Elφptica
  209.              { %def --SPOT FUNCTION : ELIPTICA
  210.                 dup mul .9 mul
  211.                 exch dup mul add
  212.                 1 sub
  213.         } bind def
  214.  
  215. %----------------------------------------------------------------------------
  216.  
  217. %@Fill
  218. /Archimedes %Arquφmedes,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  219.    {
  220.    /BackgroundGray exch -1 100 InRange def
  221.    /ForegroundGray exch 0 100 InRange def
  222.    /Linewidth      exch 0 100 InRange def
  223.    /Frequency      exch 2 100 InRange def
  224.  
  225.    /newfont 10 dict def
  226.    newfont begin
  227.  
  228.    /FontMatrix [3 sqrt 1 add 1 exch div  0  0
  229.                3 sqrt 1 add 1 exch div  0  0] def
  230.    /FontType 3 def
  231.    /FontBBox [0 0 3 sqrt 1 add 3 sqrt 1 add] def
  232.    /Encoding 256 array def
  233.    0 1 255 {Encoding exch /.notdef put} for
  234.  
  235.    /BuildChar
  236.      { 3 sqrt 1 add  0
  237.        -0.1 -0.1 3 sqrt 1.1 add 3 sqrt 1.1 add
  238.        setcachedevice
  239.        pop begin
  240.  
  241.        0 0 moveto
  242.        1 2 div  0 lineto
  243.        0  3 sqrt 2 div lineto
  244.        3 sqrt 2 div  3 sqrt 1 add 2 div lineto
  245.        0  3 sqrt 2 div 1 add lineto
  246.        0  3 sqrt 2 div lineto
  247.  
  248.        0  3 sqrt 2 div 1 add moveto
  249.        1 2 div  3 sqrt 1 add lineto
  250.        3 sqrt 1 add 2 div  3 sqrt 1 2 div add lineto
  251.        3 sqrt 2 div  3 sqrt 1 add 2 div lineto
  252.        3 sqrt 2 div 1 add  3 sqrt 1 add 2 div lineto
  253.        3 sqrt 1 add 2 div  3 sqrt 1 2 div add lineto
  254.        3 sqrt 1 2 div add  3 sqrt 1 add lineto
  255.        3 sqrt 1 add  3 sqrt 2 div 1 add lineto
  256.        3 sqrt 2 div 1 add  3 sqrt 1 add 2 div lineto
  257.        3 sqrt 1 add  3 sqrt 2 div lineto
  258.        3 sqrt 1 2 div add  0 lineto
  259.        3 sqrt 1 add 2 div  1 2 div lineto
  260.        3 sqrt 2 div 1 add  3 sqrt 1 add 2 div lineto
  261.  
  262.        3 sqrt 1 add 2 div  3 sqrt 1 add moveto
  263.        3 sqrt 1 add 2 div  3 sqrt 1 2 div add lineto
  264.  
  265.        3 sqrt 1 add 2 div  0  moveto
  266.        3 sqrt 1 add 2 div  1 2 div lineto
  267.  
  268.        1 2 div  0 moveto
  269.        3 sqrt 1 add 2 div  1 2 div lineto
  270.        3 sqrt 2 div  3 sqrt 1 add 2 div lineto
  271.  
  272.        3 sqrt 1 2 div add  0 moveto
  273.        3 sqrt 1 add  0 lineto
  274.  
  275.        3 sqrt 1 2 div add  3 sqrt 1 add moveto
  276.        3 sqrt 1 add  3 sqrt 1 add lineto
  277.  
  278.        0  3 sqrt 1 add moveto
  279.        1 2 div  3 sqrt 1 add lineto
  280.  
  281.        3 sqrt 1 add  3 sqrt 2 div moveto
  282.        3 sqrt 1 add  3 sqrt 2 div 1 add lineto
  283.  
  284.        Linewidth pntsize div 3 sqrt 1 add mul setlinewidth
  285.        stroke
  286.  
  287.       end
  288.      } def
  289.    end
  290.  
  291.    /pntsize 2000 Frequency div def
  292.    /FillFont newfont definefont pop
  293.    /FillFont findfont pntsize scalefont setfont
  294.  
  295.    eoclip
  296.    BackgroundGray 0 ge
  297.       { BackgroundGray 100 div 1 exch sub setgray fill }
  298.       { newpath } ifelse
  299.  
  300.    ForegroundGray 100 div 1 exch sub setgray
  301.  
  302.    Bblly pntsize Bbury
  303.      { Bbllx pntsize Bburx
  304.        { 1 index moveto
  305.        (a) show
  306.        } for
  307.      pop
  308.      } for
  309.    } bind def
  310.  
  311. %@Fill
  312. /Bars %Barras,4, Ancho=10, Espaciado(%)=100, GrisMßximo=100, GrisMφnimo=10
  313.    {
  314.    /MinGrey exch 0 100 InRange def
  315.    /MaxGrey exch MinGrey 100 InRange def
  316.    /Spacing exch 0 300 InRange def
  317.    /Width exch 1 100 InRange def
  318.  
  319.    /dgrey MaxGrey MinGrey sub def
  320.    /inc 1 Spacing 100 div add def
  321.  
  322.    eoclip newpath
  323.  
  324.    currentscreen
  325.    3 -1 roll
  326.    pop 90
  327.    3 1 roll
  328.    setscreen
  329.  
  330.    Bbllx Bblly translate
  331.    /dx Bburx Bbllx sub Width div def
  332.    /dy Bbury Bblly sub Width div def
  333.    Width 10 mul dup scale
  334.    /mtx matrix currentmatrix def
  335.    .05 setlinewidth
  336.  
  337.    0 inc dx
  338.      { 0 translate
  339.       -.5 .05 .5
  340.          { dup 0 moveto
  341.            dup dy lineto
  342.            dup mul 0.250001 exch sub sqrt 2 mul
  343.            dgrey mul MaxGrey exch sub 100 div 1 exch sub setgray
  344.            stroke
  345.          } for
  346.       mtx setmatrix
  347.       } for
  348.    dx 0 translate
  349.    90 rotate
  350.    /mtx matrix currentmatrix def
  351.    0 inc dy
  352.      { 0 translate
  353.       -.5 .05 .5
  354.          { dup 0 moveto
  355.            dup dx lineto
  356.            dup mul 0.250001 exch sub sqrt 2 mul
  357.            dgrey mul MaxGrey exch sub 100 div 1 exch sub setgray
  358.            stroke
  359.          } for
  360.       mtx setmatrix
  361.       } for
  362.    } bind def
  363.  
  364. %@Fill
  365. /Basketweave %CestaEntrelazada,4, Frecuencia=6, AnchoLφnea=10, Gris1erPlano=100, AnchoOnda(%)=100
  366.    {
  367.    /Width exch 1 200 InRange def
  368.    /Grey exch 0 100 InRange def
  369.    /LineWidth exch 0 100 InRange def
  370.    /Frequency exch 1 100 InRange def
  371.  
  372.    /dif Width 100 sub 100 div def
  373.  
  374.    /newfont 10 dict def
  375.    newfont begin
  376.  
  377.    /FontMatrix [.25  0
  378.                 0    .25
  379.                 0    0] def
  380.    /FontType 3 def
  381.    /FontBBox [0 0 4 4] def
  382.    /Encoding 256 array def
  383.    0 1 255 {Encoding exch /.notdef put} for
  384.    Encoding 97 /Holes put
  385.    Encoding 98 /Weave put
  386.  
  387.    /CharProcs 3 dict def
  388.    CharProcs begin
  389.    /.notdef {} def
  390.    /Holes
  391.       {
  392.       1 dif moveto
  393.       2 dif sub 1 lineto
  394.       1 2 dif sub lineto
  395.       dif 1 lineto
  396.       closepath
  397.       fill
  398.  
  399.       3 2 dif add moveto
  400.       4 dif sub 3 lineto
  401.       3 4 dif sub lineto
  402.       2 dif add 3 lineto
  403.       closepath
  404.       fill
  405.       } def
  406.    /Weave
  407.       {
  408.       0 3 dif add moveto
  409.       1 dif sub 4 lineto
  410.  
  411.       0 1 dif add moveto
  412.       1 dif lineto
  413.  
  414.       3 dif sub 4 moveto
  415.       4 dif sub 3 lineto
  416.  
  417.       1 dif sub 0 moveto
  418.       2 dif sub 1 lineto
  419.  
  420.       4 3 dif add moveto
  421.       3 2 dif add lineto
  422.  
  423.       3 dif sub 0 moveto
  424.       1 2 dif sub lineto
  425.  
  426.       4 1 dif add moveto
  427.       2 dif add 3 lineto
  428.  
  429.       dif 1 moveto
  430.       3 4 dif sub lineto
  431.  
  432.       LineWidth 100 div setlinewidth
  433.       stroke
  434.       } def
  435.    end
  436.  
  437.    /BuildChar
  438.      { 4  0
  439.        -0.1 -0.1 4.1 4.1
  440.        setcachedevice
  441.        exch begin
  442.        Encoding exch get
  443.        CharProcs exch get
  444.        end
  445.        exec
  446.      } def
  447.    end
  448.  
  449.    /pntsize 1000 Frequency div def
  450.  
  451.    /FillFont newfont definefont pop
  452.    /FillFont findfont pntsize scalefont setfont
  453.  
  454.    eoclip newpath
  455.  
  456.    Grey 100 div 1 exch sub setgray
  457.    Bblly pntsize Bbury
  458.      { Bbllx exch moveto
  459.        { (a) show
  460.          currentpoint
  461.          pop Bburx gt
  462.          {exit} if
  463.        } loop
  464.      } for
  465.  
  466.    0 setgray
  467.    Bblly pntsize Bbury
  468.      { Bbllx exch moveto
  469.        { (b) show
  470.          currentpoint
  471.          pop Bburx gt
  472.          {exit} if
  473.        } loop
  474.      } for
  475.  
  476.    } bind def
  477.  
  478. %@Fill
  479. /Birds %Pßjaros,4, Frecuencia=8, AnchoLφnea=4, Gris1erPlano=100, GrisFondo=0
  480.    {
  481.    /BackgroundGray exch -1 100 InRange def
  482.    /ForegroundGray exch 0 100 InRange def
  483.    /Linewidth      exch 0 100 InRange def
  484.    /Frequency      exch 2 100 InRange def
  485.  
  486.    /newfont 10 dict def
  487.    newfont begin
  488.  
  489.    /FontMatrix [1 162 div  0
  490.                 0         1 162 div
  491.                 0         0] def
  492.    /FontType 3 def
  493.    /FontBBox [-92 -150 46 12] def
  494.    /Encoding 256 array def
  495.    0 1 255 {Encoding exch /.notdef put} for
  496.  
  497.    /BuildChar
  498.      { 138  0
  499.        -92 -150 46 12
  500.        setcachedevice
  501.        pop begin
  502.  
  503.        -92 -150 moveto
  504.        -92 12   lineto
  505.        46  12   lineto
  506.        46 -150  lineto
  507.        closepath
  508.        clip
  509.        newpath
  510.  
  511.        2 {
  512.          gsave
  513.          3 {
  514.            -10 -8 moveto
  515.            60 24  -54 60  -9 72 curveto
  516.            -2.5 73.7  11.5 70.3  29 75.4 curveto
  517.  
  518.            -54 6 moveto
  519.            -45 14  -27 16  -18 18 curveto
  520.            27 27  -81 54  -9 90 curveto
  521.  
  522.            -126 9 moveto
  523.            -114 27  -66 66  -54 24 curveto
  524.            -53 21  -49 15  -43 12 curveto
  525.  
  526.            [ -1     0
  527.               0     1
  528.               0     0 ] concat
  529.              135 -81 translate
  530.          } repeat
  531.  
  532.        Linewidth pntsize div 162 mul setlinewidth
  533.        stroke
  534.        grestore
  535.        138 0 translate
  536.  
  537.      } repeat
  538.  
  539.      end
  540.      } def
  541.    end
  542.  
  543.    /pntsize 1174 Frequency div def
  544.  
  545.    /FillFont newfont definefont pop
  546.    /FillFont findfont pntsize scalefont setfont
  547.  
  548.    eoclip
  549.    BackgroundGray 0 ge
  550.       { BackgroundGray 100 div 1 exch sub setgray fill }
  551.       { newpath } ifelse
  552.  
  553.    ForegroundGray 100 div 1 exch sub setgray
  554.  
  555.     Bblly pntsize Bbury
  556.         { Bbllx exch moveto
  557.         { (a) show
  558.           currentpoint
  559.           pop Bburx gt
  560.           {exit} if
  561.         } loop
  562.       } for
  563.     } bind def
  564.  
  565. %@Fill
  566. /Bricks %Ladrillos,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  567.    {
  568.    /BackgroundGray exch -1 100 InRange def
  569.    /ForegroundGray exch 0 100 InRange def
  570.    /Linewidth      exch 0 100 InRange def
  571.    /Frequency      exch 2 100 InRange def
  572.  
  573.    /newfont 10 dict def
  574.    newfont begin
  575.  
  576.    /FontMatrix [1  0  0
  577.                 1  0  0] def
  578.    /FontType 3 def
  579.    /FontBBox [0 0 1 1] def
  580.    /Encoding 256 array def
  581.    0 1 255 {Encoding exch /.notdef put} for
  582.  
  583.    /BuildChar
  584.      { 1  0
  585.        -0.1 -0.1 1.1 1.1
  586.        setcachedevice
  587.        pop begin
  588.  
  589.        0 0 moveto
  590.        1 0 lineto
  591.        1 .5 lineto
  592.        0 .5 lineto
  593.        closepath
  594.        .5 .5 moveto
  595.        .5 1 lineto
  596.  
  597.        Linewidth pntsize div setlinewidth
  598.        stroke
  599.  
  600.       end
  601.      } def
  602.    end
  603.  
  604.    /pntsize 1000 Frequency div def
  605.  
  606.    /FillFont newfont definefont pop
  607.    /FillFont findfont pntsize scalefont setfont
  608.  
  609.    eoclip
  610.    BackgroundGray 0 ge
  611.       { BackgroundGray 100 div 1 exch sub setgray fill }
  612.       { newpath } ifelse
  613.  
  614.    ForegroundGray 100 div 1 exch sub setgray
  615.  
  616.    Bblly pntsize Bbury
  617.      { Bbllx exch moveto
  618.        { (a) show
  619.          currentpoint
  620.          pop Bburx gt
  621.          {exit} if
  622.        } loop
  623.      } for
  624.    } bind def
  625.  
  626. %@Fill
  627. /Bubbles %Burbujas,5, N·mero(pulgadas2)=25, Tama±oMßximo=300, Tama±oMφnimo=10, AnchoLφnea=10, Funci≤nAleatoria=0
  628.    { srand
  629.    /LineWidth exch 0 50 InRange def
  630.    /MinSize exch 1 1000 InRange def
  631.    /MaxSize exch MinSize 1000 InRange def
  632.    /Number exch 1 250 InRange def
  633.  
  634.    eoclip
  635.    newpath
  636.    /pntsize MaxSize MinSize div cvi def
  637.    /dx Bburx Bbllx sub def
  638.    /dy Bbury Bblly sub def
  639.  
  640.    dx dy mul Number mul 1000000 div cvi
  641.    {  rand dx mod Bbllx add
  642.       rand dy mod Bblly add
  643.       rand pntsize mod 1 add pntsize exch div MinSize mul
  644.       3 copy
  645.       2 index add
  646.       exch
  647.       moveto
  648.       pop
  649.       0 360 arc
  650.       gsave
  651.       0 setgray
  652.       LineWidth setlinewidth
  653.       stroke
  654.       grestore
  655.       1 setgray
  656.       fill
  657.       } repeat
  658.  
  659.    } bind def
  660.  
  661. %@Fill
  662. /Carpet %Alfombra,5, Frecuencia(dpi)=72, Gris=100, Gamma(TamCuadro)=50, FactorMod=3, Alpha=10
  663.    {
  664.    /Alpha exch def
  665.    /Modf exch def
  666.    /Gamma exch def
  667.    /Grey exch 0 100 InRange def
  668.    /Frequency exch 10 300 InRange def
  669.  
  670.    /Beta1 -10 def
  671.    /Beta2 -15 def
  672.  
  673.    eoclip newpath
  674.  
  675.    /wz 360 def
  676.    2 1 Gamma sqrt
  677.       { dup Gamma exch mod
  678.       0 eq { dup wz exch mod
  679.            0 eq { /wz wz 2 index div cvi def
  680.                 } if
  681.            } if
  682.       pop
  683.       } for
  684.  
  685.    /newfont 10 dict def
  686.    newfont begin
  687.  
  688.    /FontMatrix [1 wz div  0
  689.                 0          1 wz div
  690.                 0          0] def
  691.    /FontType 3 def
  692.    /FontBBox [0 0 wz wz] def
  693.    /Encoding 256 array def
  694.    0 1 255 {Encoding exch /.notdef put} for
  695.  
  696.    /BuildChar
  697.      { wz  0
  698.        -0.1 -0.1 wz 0.1 add wz 0.1 add
  699.        setcachedevice
  700.        pop begin
  701.  
  702.       0 1 wz
  703.          { 0 1 wz
  704.             { 1 index 2 copy
  705.             Gamma mul Beta2 add sin
  706.             exch Gamma mul Beta1 add sin
  707.             add Alpha mul cvi Modf mod
  708.             0 eq { moveto
  709.                   1 0 rlineto
  710.                   0 1 rlineto
  711.                   -1 0 rlineto
  712.                   closepath
  713.                   fill }
  714.                  { pop pop } ifelse
  715.             }   for
  716.          pop
  717.          } for
  718.  
  719.        end
  720.      } def
  721.    end
  722.  
  723.    /pntsize wz 1000 mul Frequency div def
  724.  
  725.    /FillFont newfont definefont pop
  726.    /FillFont findfont pntsize scalefont setfont
  727.  
  728.    Grey 100 div 1 exch sub setgray
  729.    Bblly pntsize Bbury
  730.      { Bbllx 1 index moveto
  731.        { (a) show
  732.          currentpoint
  733.          dup 3 index sub
  734.          pntsize 2 div gt { pntsize sub } if
  735.          1 index Bburx gt
  736.          {pop pop pop exit} if
  737.          moveto
  738.        } loop
  739.      } for
  740.    } bind def
  741.  
  742. %@Fill
  743. /CircleGrid %RejillaCircular,5, Frecuencia=6, AnchoLφnea1=6, AnchoLφnea2=6, Gris1=40, Gris2=40
  744.    {
  745.    /Grey2 exch -1 100 InRange def
  746.    /Grey1 exch -1 100 InRange def
  747.    /LineWidth2 exch 0 100 InRange def
  748.    /LineWidth1 exch 0 100 InRange def
  749.    /Frequency exch 1 72 InRange def
  750.  
  751.    /newfont 10 dict def
  752.    newfont begin
  753.  
  754.    /FontMatrix [1 3 sqrt 3 mul div  0
  755.                 0                   1 3 sqrt 3 mul div
  756.                 0                   0] def
  757.    /FontType 3 def
  758.    /FontBBox [0 0 2 3 sqrt 3 mul] def
  759.  
  760.    /Encoding 256 array def
  761.    0 1 255 {Encoding exch /.notdef put} for
  762.    Encoding 97 /OneCircle put
  763.    Encoding 98 /OneCircleFilled put
  764.    Encoding 99 /TwoCircles put
  765.    Encoding 100 /TwoCirclesFilled put
  766.  
  767.    /CharProcs 5 dict def
  768.    CharProcs begin
  769.    /.notdef {} def
  770.    /OneCircle
  771.      { 1 3 sqrt 2 div add  3 sqrt 5 mul 2 div moveto
  772.        1  3 sqrt 5 mul 2 div  3 sqrt 2 div 0 360 arc
  773.  
  774.        LineWidth1 pntsize div 3 sqrt 3 mul mul setlinewidth
  775.        stroke
  776.    } def
  777.  
  778.    /OneCircleFilled
  779.      { 1 3 sqrt 2 div add  3 sqrt 5 mul 2 div moveto
  780.        1  3 sqrt 5 mul 2 div  3 sqrt 2 div 0 350 arc
  781.  
  782.        fill
  783.    } def
  784.  
  785.    /TwoCircles
  786.      { 1 3 sqrt 2 div add  3 sqrt 2 div moveto
  787.        1 3 sqrt 2 div dup 0 360 arc
  788.  
  789.        1 3 sqrt 2 div add  3 sqrt 3 mul 2 div moveto
  790.        1  3 sqrt 3 mul 2 div  3 sqrt 2 div 0 360 arc
  791.  
  792.        LineWidth2 pntsize div 3 sqrt 3 mul mul setlinewidth
  793.        stroke
  794.    } def
  795.  
  796.    /TwoCirclesFilled
  797.      { 1 3 sqrt 2 div add  3 sqrt 2 div moveto
  798.        1 3 sqrt 2 div dup 0 360 arc
  799.  
  800.        1 3 sqrt 2 div add  3 sqrt 3 mul 2 div moveto
  801.        1  3 sqrt 3 mul 2 div  3 sqrt 2 div 0 360 arc
  802.  
  803.        fill
  804.    } def
  805.  
  806.    end
  807.  
  808.    /BuildChar
  809.      {3 2 div  3 sqrt 3 mul 2 div
  810.       -0.1 -0.1 2.1  3 sqrt 3 mul 0.1 add
  811.       setcachedevice
  812.       exch begin
  813.       Encoding exch get
  814.       CharProcs exch get
  815.       end
  816.       exec
  817.      }def
  818.    end
  819.  
  820.    /pntsize 3000 Frequency div def
  821.  
  822.    /FillFont newfont definefont pop
  823.    /FillFont findfont pntsize scalefont setfont
  824.  
  825.    /Bbllx Bbllx pntsize sub def
  826.    /Bblly Bblly pntsize sub def
  827.    /Bburx Bburx pntsize add def
  828.    /Bbury Bbury pntsize add def
  829.  
  830.    eoclip newpath
  831.  
  832.    Grey1 0 ge
  833.       { Grey1 100 div 1 exch sub setgray
  834.       Bblly pntsize Bbury
  835.         { Bbllx 1 index moveto
  836.           { (b) show
  837.             currentpoint
  838.             dup 3 index sub
  839.             pntsize 2.1 div gt { pntsize sub } if
  840.             1 index Bburx gt
  841.             {pop pop pop exit} if
  842.             moveto
  843.           } loop
  844.        } for
  845.       } if
  846.  
  847.    Grey2 0 ge
  848.       { Grey2 100 div 1 exch sub setgray
  849.       Bblly pntsize Bbury
  850.         { Bbllx 1 index moveto
  851.           { (d) show
  852.             currentpoint
  853.             dup 3 index sub
  854.             pntsize 2.1 div gt { pntsize sub } if
  855.             1 index Bburx gt
  856.             {pop pop pop exit} if
  857.             moveto
  858.           } loop
  859.         } for
  860.       } if
  861.  
  862.    LineWidth1 0 gt
  863.       { 0 setgray
  864.       Bblly pntsize Bbury
  865.         { Bbllx 1 index moveto
  866.           { (a) show
  867.             currentpoint
  868.             dup 3 index sub
  869.             pntsize 2.1 div gt { pntsize sub } if
  870.             1 index Bburx gt
  871.             {pop pop pop exit} if
  872.             moveto
  873.           } loop
  874.         } for
  875.       } if
  876.  
  877.    LineWidth2 0 gt
  878.       { 0 setgray
  879.       Bblly pntsize Bbury
  880.         { Bbllx 1 index moveto
  881.           { (c) show
  882.             currentpoint
  883.             dup 3 index sub
  884.             pntsize 2.1 div gt { pntsize sub } if
  885.             1 index Bburx gt
  886.             {pop pop pop exit} if
  887.             moveto
  888.           } loop
  889.         } for
  890.       } if
  891.  
  892.    } bind def
  893.  
  894. %@Fill
  895. /Construction %Construcci≤n,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  896.    {
  897.    /BackgroundGray exch -1 100 InRange def
  898.    /ForegroundGray exch 0 100 InRange def
  899.    /Linewidth      exch 0 100 InRange def
  900.    /Frequency      exch 2 100 InRange def
  901.  
  902.    /newfont 10 dict def
  903.    newfont begin
  904.  
  905.    /FontMatrix  [ .1     0
  906.                   0      .1
  907.                   0      0] def
  908.    /FontType 3 def
  909.    /FontBBox [-1 -1 9.66 11] def
  910.    /Encoding 256 array def
  911.    0 1 255 {Encoding exch /.notdef put} for
  912.  
  913.    /BuildChar
  914.      { 8.66 5
  915.        -1 -1 9.66 11
  916.        setcachedevice
  917.        pop begin
  918.  
  919.        1 0 moveto
  920.        0 0 1 -60 300 arc
  921.        3 sqrt 5 mul .5 add  5 3 sqrt 2 div sub lineto
  922.        3 sqrt 5 mul  5  1  -60 420 arc
  923.        .5  10 3 sqrt 2 div add lineto
  924.        0 10 1 60 180 arc
  925.        -1 0 lineto
  926.  
  927.        -.5 3 sqrt 2 div moveto
  928.        3 sqrt 5 mul .5 sub  5 3 sqrt 2 div add lineto
  929.        3 sqrt 5 mul .5 sub  5 3 sqrt 2 div sub moveto
  930.        -.5  10 3 sqrt 2 div sub lineto
  931.        1 10 moveto
  932.        1 0 lineto
  933.  
  934.        Linewidth pntsize div 10 mul setlinewidth
  935.        stroke
  936.       end
  937.      } def
  938.    end
  939.  
  940.    /pntsize 1126 Frequency div def
  941.    /FillFont newfont definefont pop
  942.    /FillFont findfont pntsize scalefont setfont
  943.  
  944.    /Bbllx Bbllx pntsize sub def
  945.  
  946.    eoclip
  947.    BackgroundGray 0 ge
  948.       { BackgroundGray 100 div 1 exch sub setgray fill }
  949.       { newpath } ifelse
  950.  
  951.    ForegroundGray 100 div 1 exch sub setgray
  952.  
  953.    Bblly pntsize Bbury
  954.      { Bbllx 1 index moveto
  955.        { (a) show
  956.          currentpoint
  957.          dup 3 index sub
  958.          pntsize 2.1 div gt { pntsize sub } if
  959.          1 index Bburx gt
  960.          {pop pop pop exit} if
  961.          moveto
  962.        } loop
  963.      } for
  964.    } bind def
  965.  
  966. %@Fill
  967. /Cracks %Grietas,5, N·mero=20, LongMßx=125, LongMφn=75, LongEtapa=14, AnchoLφnea=5
  968.    {
  969.    /LineWidth exch 0 100 InRange def
  970.    /StepLength exch 1 100 InRange def
  971.    /MinLength exch 1 300 InRange def
  972.    /MaxLength exch MinLength 300 InRange MinLength wDstChck def
  973.    /Number exch 1 100 InRange def
  974.  
  975.    eoclip newpath
  976.  
  977.    /dx Bburx Bbllx sub def
  978.    /dy Bbury Bblly sub def
  979.  
  980.    Number {
  981.       gsave
  982.       /theta rand 360 mod def
  983.  
  984.       rand dx mod Bbllx add
  985.       rand dy mod Bblly add
  986.       moveto
  987.  
  988.       StepLength dup scale
  989.       LineWidth StepLength div setlinewidth
  990.  
  991.       MinLength
  992.       MaxLength MinLength sub
  993.       rand 1 index mod 2 index add
  994.          {
  995.          currentpoint translate
  996.          rand 120 mod 60 sub theta add dup rotate
  997.          0 0 moveto
  998.          1 0 lineto
  999.          stroke
  1000.          1 0 moveto
  1001.          neg rotate
  1002.          } repeat
  1003.       grestore
  1004.       pop pop
  1005.       } repeat
  1006.    } bind def
  1007.  
  1008. %@Fill
  1009. /Craters %Crßteres,5, N·mero=15, Tama±oMßximo=300, Tama±oMφnimo=75, GrisFondo=0, Funci≤nAleatoria=0
  1010.    { srand
  1011.    /BackgroundGrey exch 0 100 InRange def
  1012.    /MinSize exch 1 500 InRange def
  1013.    /MaxSize exch MinSize 500 InRange MinSize wDstChck def
  1014.    /Number exch 1 50 InRange def
  1015.  
  1016.    eoclip
  1017.    BackgroundGrey 100 div 1 exch sub setgray
  1018.    fill
  1019.  
  1020.    /pntsize 333 def
  1021.    /dx Bburx Bbllx sub def
  1022.    /dy Bbury Bblly sub def
  1023.    /DifSize MaxSize MinSize sub cvi def
  1024.  
  1025.    Bbllx Bblly translate
  1026.  
  1027.    matrix currentmatrix
  1028.    dx dy mul 1000000 div Number mul cvi {
  1029.       dup
  1030.       rand dx mod  rand dy mod  translate
  1031.       /size rand DifSize mod MinSize add def
  1032.       0 0 size .7 mul  0 360 arc
  1033.       BackgroundGrey 100 div 1 exch sub setgray fill
  1034.  
  1035.       0
  1036.          { rand 18 mod add 10 add
  1037.          dup 360 gt { pop exit } if
  1038.          dup rotate
  1039.          size 5 div  0 moveto
  1040.          rand 300 mod 200 add 500 div size mul  0 lineto
  1041.          dup neg rotate
  1042.          } loop
  1043.  
  1044.       0 setgray
  1045.       1 setlinewidth
  1046.       stroke
  1047.       setmatrix
  1048.       } repeat
  1049.    pop
  1050.    } bind def
  1051.  
  1052. %@Fill
  1053. /Crosshatching %RayadoEnCruz,5, DistMßxima=75, DistMφnima=0, AnchoLφnea=5, Angulo=45, Funci≤n aleatoria=0
  1054.    { srand
  1055.    /Angle exch -180 180 InRange def
  1056.    /LineWidth exch 0 100 InRange def
  1057.    /MinDist exch 0 500 InRange def
  1058.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  1059.  
  1060.    eoclip
  1061.    newpath
  1062.  
  1063.    /pntsize MaxDist MinDist sub def
  1064.    /dx2 Bburx Bbllx sub 2 div def
  1065.    /dy2 Bbury Bblly sub 2 div def
  1066.    /hyp2 dx2 dup mul dy2 dup mul add sqrt def
  1067.  
  1068.    Bbllx Bblly translate
  1069.    dx2 dy2 translate
  1070.    Angle rotate
  1071.    LineWidth setlinewidth
  1072.  
  1073.    /wd hyp2 neg def
  1074.       { /wd rand pntsize mod MinDist add wd add def
  1075.       wd hyp2 neg moveto
  1076.       wd hyp2 lineto
  1077.       stroke
  1078.       wd hyp2 gt {exit} if
  1079.       } loop
  1080.  
  1081.    Angle -2 mul rotate
  1082.    /wd hyp2 neg def
  1083.       { /wd rand pntsize mod MinDist add wd add def
  1084.       wd hyp2 neg moveto
  1085.       wd hyp2 lineto
  1086.       stroke
  1087.       wd hyp2 gt {exit} if
  1088.       } loop
  1089.  
  1090.    } bind def
  1091.  
  1092. %@Fill
  1093. /CrystalLattice %Enrejado,4, Frecuencia=4, GrisFondo=100, Gris1erPlano=0, Escala(%)=75
  1094.    {
  1095.    /Scaling exch 10 100 InRange def
  1096.    /FrontGrey exch 0 100 InRange def
  1097.    /BackGrey exch -100 100 InRange def
  1098.    /Frequency exch 1 50 InRange def
  1099.  
  1100.    /newfont 10 dict def
  1101.    newfont begin
  1102.  
  1103.    /FontMatrix [1                   0
  1104.                 0                   1
  1105.                 0                   0] def
  1106.    /FontType 3 def
  1107.    /FontBBox [0 0 1 1] def
  1108.    /Encoding 256 array def
  1109.    0 1 255 {Encoding exch /.notdef put} for
  1110.  
  1111.    /BuildChar
  1112.      { 1 0
  1113.        -0.1 -0.1 1.1 1.1
  1114.        setcachedevice
  1115.        pop begin
  1116.  
  1117.        gsave
  1118.        0 0 moveto
  1119.        3 { 1 0 lineto
  1120.          currentpoint translate
  1121.          90 rotate
  1122.          } repeat
  1123.        closepath
  1124.        .05 setlinewidth
  1125.        stroke
  1126.        grestore
  1127.  
  1128.        gsave
  1129.        4 { .2 0 moveto
  1130.          0 0 .2 0 360 arc
  1131.          fill
  1132.          1 0 translate
  1133.          90 rotate
  1134.          } repeat
  1135.        grestore
  1136.  
  1137.        end
  1138.      } def
  1139.    end
  1140.  
  1141.    /pntsize 1000 Frequency div cvi def
  1142.  
  1143.    /FillFont newfont definefont pop
  1144.    /FillFont findfont pntsize scalefont setfont
  1145.  
  1146.    /dx Bburx Bbllx sub def
  1147.    /dy Bbury Bblly sub def
  1148.  
  1149.    eoclip newpath
  1150.  
  1151.    currentscreen
  1152.    3 -1 roll
  1153.    pop 120
  1154.    3 1 roll
  1155.    setscreen
  1156.  
  1157.    Bbllx dx 2 div add  Bblly dy 2 div add translate
  1158.  
  1159.    /dx dx 100 mul Scaling div def
  1160.    /dy dy 100 mul Scaling div def
  1161.  
  1162.    Scaling 100 div dup scale
  1163.    100 Scaling div log 10 div 10 exch exp
  1164.    BackGrey 0 100 InRange 100 div  FrontGrey BackGrey sub 1000 div  FrontGrey .1 sub 100 div
  1165.       { 1 exch sub setgray
  1166.       dup dup scale
  1167.       dy 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1168.         pntsize   dy pntsize add 2 div
  1169.         { dx 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1170.           1 index moveto
  1171.           { (a) show
  1172.             currentpoint
  1173.             dup 3 index sub
  1174.             pntsize 2.1 div gt { pntsize sub } if
  1175.             1 index dx pntsize add 2 div gt
  1176.             { pop pop pop exit } if
  1177.             moveto
  1178.           } loop
  1179.         } for
  1180.       } for
  1181.       pop
  1182.    } bind def
  1183.  
  1184. %@Fill
  1185. /Denim %Tela,5, Frecuencia=72, GrisMßx=100, GrisMφn=0, TramaMedTonos=60, Funci≤nAleatoria=0
  1186.    { srand
  1187.    /Screen exch 30 300 InRange def
  1188.    /MinGrey exch 0 100 InRange def
  1189.    /MaxGrey exch MinGrey 100 InRange def
  1190.    /Frequency exch 1 300 InRange def
  1191.  
  1192.    eoclip newpath
  1193.  
  1194.    currentscreen
  1195.    3 -1 roll
  1196.    pop Screen
  1197.    3 1 roll
  1198.    setscreen
  1199.  
  1200.    /dx Bburx Bbllx sub def
  1201.    /dy Bbury Bblly sub def
  1202.    /wf Frequency 1000 div def
  1203.    /dgrey MaxGrey MinGrey sub 100 div def
  1204.  
  1205.    Bbllx Bblly translate
  1206.    /str 512 string def
  1207.  
  1208.    dx wf mul cvi 1 add  dy wf mul cvi 1 add  8  [wf 0 0 wf 0 0]
  1209.       { dgrey MinGrey 2.55 mul
  1210.       0 1 511
  1211.          { str exch
  1212.          rand -11 bitshift 255 and 4 index mul 3 index add cvi
  1213.          put
  1214.          } for
  1215.       pop pop
  1216.       str
  1217.      }image
  1218.  
  1219.    } bind def
  1220.  
  1221. %@Fill
  1222. /DNA %ADN,5, Frecuencia=4, AnchoLφnea=1, Gris1erPlano=100, GrisFondo=0, Espaciado(%)=100
  1223.    {
  1224.    /Spacing        exch 1 300 InRange def
  1225.    /BackgroundGray exch -1 100 InRange def
  1226.    /ForegroundGray exch 0 100 InRange def
  1227.    /Linewidth      exch 0 100 InRange def
  1228.    /Frequency      exch 1 100 InRange def
  1229.  
  1230.    /newfont 10 dict def
  1231.    newfont begin
  1232.  
  1233.    /FontMatrix [1 360 div           0
  1234.                 0                   1 360 div
  1235.                 0                   0] def
  1236.    /FontType 3 def
  1237.    /FontBBox [-20 0 20 360] def
  1238.    /Encoding 256 array def
  1239.    0 1 255 {Encoding exch /.notdef put} for
  1240.  
  1241.    /BuildChar
  1242.      { Spacing 110
  1243.        -20  0 20 360
  1244.        setcachedevice
  1245.        pop begin
  1246.  
  1247.        Linewidth pntsize mul 110 div setlinewidth
  1248.        0 0 moveto
  1249.        0 1 360
  1250.           { dup sin 20 mul exch lineto
  1251.           } for
  1252.        stroke
  1253.        20 0 moveto
  1254.        0 1 360
  1255.           { dup cos 20 mul exch lineto
  1256.           } for
  1257.        stroke
  1258.        0 20 360
  1259.           { dup dup sin 20 mul exch moveto
  1260.           dup cos 20 mul exch lineto
  1261.           } for
  1262.        stroke
  1263.  
  1264.        end
  1265.      } def
  1266.    end
  1267.  
  1268.    /pntsize 2000 Frequency div def
  1269.  
  1270.    /FillFont newfont definefont pop
  1271.    /FillFont findfont pntsize scalefont setfont
  1272.  
  1273.    eoclip
  1274.    BackgroundGray 0 ge
  1275.       { BackgroundGray 100 div 1 exch sub setgray fill }
  1276.       { newpath } ifelse
  1277.  
  1278.    ForegroundGray 100 div 1 exch sub setgray
  1279.  
  1280.    Bblly pntsize sub pntsize Bbury pntsize add
  1281.      { Bbllx 1 index moveto
  1282.        { (a) show
  1283.          currentpoint
  1284.          dup 3 index sub
  1285.          pntsize 2.1 div gt { pntsize sub } if
  1286.          1 index Bburx gt
  1287.          {pop pop pop exit} if
  1288.          moveto
  1289.        } loop
  1290.      } for
  1291.    } bind def
  1292.  
  1293. %@Fill
  1294. /Fishscale %Escamas,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  1295.    {
  1296.    /BackgroundGray exch -1 100 InRange def
  1297.    /ForegroundGray exch 0 100 InRange def
  1298.    /Linewidth      exch 0 100 InRange def
  1299.    /Frequency      exch 2 100 InRange def
  1300.  
  1301.    /newfont 10 dict def
  1302.    newfont begin
  1303.  
  1304.    /FontMatrix [1  0  0
  1305.                 1  0  0] def
  1306.    /FontType 3 def
  1307.    /FontBBox [0 0 1 1] def
  1308.    /Encoding 256 array def
  1309.    0 1 255 {Encoding exch /.notdef put} for
  1310.  
  1311.    /BuildChar
  1312.      { 1  0
  1313.        0 0 1 1
  1314.        setcachedevice
  1315.        pop begin
  1316.  
  1317.        0.5 0.5 0.5 360 180 arcn
  1318.        0 1 0.5 270 360 arc
  1319.        1 1 0.5 180 270 arc
  1320.  
  1321.        Linewidth pntsize div setlinewidth
  1322.        stroke
  1323.  
  1324.       end
  1325.      } def
  1326.    end
  1327.  
  1328.    /pntsize 1000 Frequency div def
  1329.    /FillFont newfont definefont pop
  1330.    /FillFont findfont pntsize scalefont setfont
  1331.  
  1332.    eoclip
  1333.    BackgroundGray 0 ge
  1334.       { BackgroundGray 100 div 1 exch sub setgray fill }
  1335.       { newpath } ifelse
  1336.  
  1337.    ForegroundGray 100 div 1 exch sub setgray
  1338.  
  1339.     Bblly pntsize Bbury
  1340.       { Bbllx exch moveto
  1341.         { (a) show
  1342.           currentpoint
  1343.           pop Bburx gt
  1344.           {exit} if
  1345.         } loop
  1346.       } for
  1347.     } bind def
  1348.  
  1349.  
  1350. %@Fill
  1351. /Grass %Hierba,5, N·mero=100, Tama±oMßximo=35, Tama±oMφnimo=7, Gris=0, Funci≤nAleatoria=0
  1352.     { srand
  1353.     /Grey exch -1 100 InRange def
  1354.     /MinSize exch 1 100 InRange def
  1355.     /MaxSize exch MinSize 100 InRange MinSize wDstChck def
  1356.     /Number exch 1 500 InRange def
  1357.  
  1358.     eoclip
  1359.     Grey 0 ge
  1360.        { Grey 100 div 1 exch sub setgray fill }
  1361.        { newpath } ifelse
  1362.  
  1363.     /Bbllx Bbllx MaxSize sub def
  1364.     /Bblly Bblly MaxSize sub def
  1365.  
  1366.     /dx Bburx Bbllx sub def
  1367.     /dy Bbury Bblly sub def
  1368.     /dSize MaxSize MinSize sub def
  1369.  
  1370.     dx dy mul 1000000 div Number mul cvi
  1371.        {
  1372.  
  1373.        matrix currentmatrix
  1374.  
  1375.        rand dx mod Bbllx add
  1376.        rand dy mod Bblly add
  1377.        translate
  1378.  
  1379.        rand dSize mod MinSize add
  1380.        dup scale
  1381.  
  1382.        -0.5 0 moveto
  1383.        rand 14 mod 7 sub
  1384.        -0.5 3  2 index 3 div 0.3 sub 10  4 index 10 curveto
  1385.        3 div 0.3 add 10 0.5 3 0.5 0 curveto
  1386.        gsave
  1387.        1 setgray
  1388.        fill
  1389.        grestore
  1390.        0.1 setlinewidth
  1391.        0 setgray
  1392.        stroke
  1393.  
  1394.        setmatrix
  1395.  
  1396.        } repeat
  1397.  
  1398.      } bind def
  1399.  
  1400. %@Fill
  1401. /Hatching %Rayado,5, DistMßxima=75, DistMφnima=0, AnchoLφnea=5, Angulo=45, Funci≤nAleatoria=0
  1402.    { srand
  1403.    /Angle exch -180 180 InRange def
  1404.    /LineWidth exch 0 100 InRange def
  1405.    /MinDist exch 0 500 InRange def
  1406.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  1407.  
  1408.    eoclip
  1409.    newpath
  1410.  
  1411.    /pntsize MaxDist MinDist sub def
  1412.    /dx2 Bburx Bbllx sub 2 div def
  1413.    /dy2 Bbury Bblly sub 2 div def
  1414.    /hyp2 dx2 dup mul dy2 dup mul add sqrt def
  1415.  
  1416.    Bbllx Bblly translate
  1417.    dx2 dy2 translate
  1418.    Angle rotate
  1419.    LineWidth setlinewidth
  1420.  
  1421.    /wd hyp2 neg def
  1422.  
  1423.       { /wd rand pntsize mod MinDist add wd add def
  1424.       wd hyp2 neg moveto
  1425.       wd hyp2 lineto
  1426.       stroke
  1427.       wd hyp2 gt {exit} if
  1428.       } loop
  1429.  
  1430.    } bind def
  1431.  
  1432. %@Fill
  1433. /Hexagons %Hexßgonos,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  1434.    {
  1435.    /BackgroundGray exch -1 100 InRange def
  1436.    /ForegroundGray exch 0 100 InRange def
  1437.    /LineWidth      exch 0 100 InRange def
  1438.    /Frequency      exch 2 100 InRange def
  1439.  
  1440.    /newfont 10 dict def
  1441.    newfont begin
  1442.  
  1443.    /FontMatrix [1 3 sqrt div        0
  1444.                 0                   1 3 sqrt div
  1445.                 0                   0] def
  1446.    /FontType 3 def
  1447.    /FontBBox [0 0 2 3 sqrt] def
  1448.    /Encoding 256 array def
  1449.    0 1 255 {Encoding exch /.notdef put} for
  1450.  
  1451.    /BuildChar
  1452.      { 3 2 div  3 sqrt 2 div
  1453.        -0.1 -0.1 2.1 3 sqrt 0.1 add
  1454.        setcachedevice
  1455.        pop begin
  1456.  
  1457.        1 2 div  0 moveto
  1458.        3 2 div  0 lineto
  1459.        2  3 sqrt 2 div lineto
  1460.        3 2 div  3 sqrt lineto
  1461.        1 2 div  3 sqrt lineto
  1462.        0  3 sqrt 2 div lineto
  1463.        closepath
  1464.  
  1465.        LineWidth pntsize div 3 sqrt mul setlinewidth
  1466.        stroke
  1467.  
  1468.       end
  1469.      } def
  1470.    end
  1471.  
  1472.    /pntsize 1155 Frequency div def
  1473.    /FillFont newfont definefont pop
  1474.    /FillFont findfont pntsize scalefont setfont
  1475.  
  1476.    eoclip
  1477.    BackgroundGray 0 ge
  1478.       { BackgroundGray 100 div 1 exch sub setgray fill }
  1479.       { newpath } ifelse
  1480.  
  1481.    ForegroundGray 100 div 1 exch sub setgray
  1482.  
  1483.    Bblly pntsize Bbury
  1484.      { Bbllx 1 index moveto
  1485.        { (a) show
  1486.          currentpoint
  1487.          dup 3 index sub
  1488.          pntsize 2 div gt { pntsize sub } if
  1489.          1 index Bburx gt
  1490.          {pop pop pop exit} if
  1491.          moveto
  1492.        } loop
  1493.      } for
  1494.    } bind def
  1495.  
  1496. %@Fill
  1497. /Honeycomb %Panal,5, Frecuencia=4, GrisFondo=100, Gris1erPlano=0, Escala(%)=75, AnchoLφnea=5
  1498.    {
  1499.    /LineWidth exch 0 100 InRange def
  1500.    /Scaling exch 10 100 InRange def
  1501.    /FrontGrey exch 0 100 InRange def
  1502.    /BackGrey exch -100 100 InRange def
  1503.    /Frequency exch 1 50 InRange def
  1504.  
  1505.    /newfont 10 dict def
  1506.    newfont begin
  1507.  
  1508.    /FontMatrix [1 3 sqrt div        0
  1509.                 0                   1 3 sqrt div
  1510.                 0                   0] def
  1511.    /FontType 3 def
  1512.    /FontBBox [0 0 2 3 sqrt] def
  1513.    /Encoding 256 array def
  1514.    0 1 255 {Encoding exch /.notdef put} for
  1515.  
  1516.    /BuildChar
  1517.      { 3 2 div  3 sqrt 2 div
  1518.        -0.1 -0.1 2.1 3 sqrt 0.1 add
  1519.        setcachedevice
  1520.        pop begin
  1521.  
  1522.        1 2 div  0 moveto
  1523.        3 2 div  0 lineto
  1524.        2  3 sqrt 2 div lineto
  1525.        3 2 div  3 sqrt lineto
  1526.        1 2 div  3 sqrt lineto
  1527.        0  3 sqrt 2 div lineto
  1528.        closepath
  1529.  
  1530.        LineWidth pntsize div 3 sqrt mul setlinewidth
  1531.        stroke
  1532.  
  1533.       end
  1534.      } def
  1535.    end
  1536.  
  1537.    /pntsize 1000 Frequency div cvi def
  1538.  
  1539.    /FillFont newfont definefont pop
  1540.    /FillFont findfont pntsize scalefont setfont
  1541.  
  1542.    /dx Bburx Bbllx sub def
  1543.    /dy Bbury Bblly sub def
  1544.  
  1545.    eoclip newpath
  1546.  
  1547.    currentscreen
  1548.    3 -1 roll
  1549.    pop 120
  1550.    3 1 roll
  1551.    setscreen
  1552.  
  1553.    Bbllx dx 2 div add  Bblly dy 2 div add translate
  1554.  
  1555.    /dx dx 100 mul Scaling div def
  1556.    /dy dy 100 mul Scaling div def
  1557.  
  1558.    Scaling 100 div dup scale
  1559.    100 Scaling div log 10 div 10 exch exp
  1560.    BackGrey 0 100 InRange 100 div  FrontGrey BackGrey sub 1000 div  FrontGrey .1 sub 100 div
  1561.       { 1 exch sub setgray
  1562.       dup dup scale
  1563.       dy 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1564.         pntsize   dy pntsize add 2 div
  1565.         { dx 2 div cvi dup pntsize mod pntsize 2 div sub sub neg
  1566.           1 index moveto
  1567.           { (a) show
  1568.             currentpoint
  1569.             dup 3 index sub
  1570.             pntsize 2.1 div gt { pntsize sub } if
  1571.             1 index dx pntsize add 2 div gt
  1572.             { pop pop pop exit } if
  1573.             moveto
  1574.           } loop
  1575.         } for
  1576.       } for
  1577.    pop
  1578.    } bind def
  1579.  
  1580. %@Fill
  1581. /Impact %Impacto,5, AnchoLφnea=5, LongEtapa=15, AnguloMßximo=40, AnguloMφnimo=10, Funci≤nAleatoria=0
  1582.    { srand
  1583.    /MinAng exch 2 90 InRange def
  1584.    /MaxAng exch MinAng 90 InRange MinAng wDstChck def
  1585.    /Step exch 10 500 InRange def
  1586.    /Linewidth exch 0 100 InRange def
  1587.  
  1588.    eoclip
  1589.    newpath
  1590.  
  1591.    /dx Bburx Bbllx sub def
  1592.    /dy Bbury Bblly sub def
  1593.    /DifAng MaxAng MinAng sub def
  1594.  
  1595.    Bbllx Bblly translate
  1596.  
  1597.    dx 2 div  dy 2 div  translate
  1598.    Linewidth Step div setlinewidth
  1599.    Step Step scale
  1600.  
  1601.    /theta 0 def
  1602.       { matrix currentmatrix
  1603.       /theta theta rand DifAng mod add MinAng add def
  1604.       theta 360 gt {pop exit} if
  1605.       theta rotate
  1606.       0 0 moveto
  1607.       rand 150 mod 50 add
  1608.          {
  1609.          currentpoint translate
  1610.          rand 120 mod 60 sub theta add dup rotate
  1611.          1 0 lineto
  1612.          neg rotate
  1613.          } repeat
  1614.       stroke
  1615.       setmatrix
  1616.       } loop
  1617.    } bind def
  1618.  
  1619.  
  1620. %@Fill
  1621. /Landscape %Paisaje,4, Profundidad=6, GrisMßximo=100, GrisMφnimo=0, Funci≤nAleatoria=0
  1622.    {
  1623.    srand
  1624.    /MinGrey exch 0 100 InRange def
  1625.    /MaxGrey exch MinGrey 100 InRange def
  1626.    /maxdepth exch 1 7 InRange def
  1627.  
  1628.    /dGrey MaxGrey MinGrey sub 200 div def
  1629.    /AvGrey MaxGrey MinGrey add 200 div def
  1630.  
  1631.    eoclip newpath
  1632.    /depth 0 def
  1633.    /ardepth 2 maxdepth 1 sub exp cvi def
  1634.    /height 1.8 8 maxdepth sub exp def
  1635.  
  1636.    /horz 0 def
  1637.    /vert 0 def
  1638.    /Array ardepth 1 add array def
  1639.    0 1 ardepth
  1640.       { Array exch ardepth 1 add array put
  1641.       } for
  1642.    0 1 ardepth
  1643.       { Array exch get
  1644.       0 1 ardepth
  1645.          { 2 copy 0 put
  1646.          pop
  1647.          } for
  1648.       pop
  1649.       } for
  1650.  
  1651.    /Square
  1652.       {
  1653.       /depth depth 1 add def
  1654.       depth maxdepth eq
  1655.       {
  1656.       Array horz get vert get dup 1 add dup moveto                    %ur
  1657.       Array horz 1 add get vert get dup 1 add lineto             %ul
  1658.       Array horz 1 add get vert 1 add get dup dup lineto         %ll
  1659.       Array horz get vert 1 add get dup 1 add exch lineto             %lr
  1660.       closepath
  1661.       sub
  1662.       dGrey mul AvGrey add
  1663.       setgray
  1664.       fill }
  1665.  
  1666.       {
  1667.       /wd 2 maxdepth depth sub 1 sub exp cvi def
  1668.  
  1669.       Array horz wd 2 mul add get vert wd 2 mul add get
  1670.       Array horz get vert wd 2 mul add get
  1671.       Array horz wd 2 mul add get vert get
  1672.       Array horz get vert get
  1673.  
  1674.       4 copy add add add 4 div
  1675.             rand 50 mod 25 sub height div 2 depth exp div add
  1676.       Array horz wd add get
  1677.             vert wd add 2 index put  pop
  1678.  
  1679.       3 index 2 index add 2 div
  1680.             rand 50 mod 25 sub height div 2 depth exp div add
  1681.       Array horz wd 2 mul add get
  1682.             vert wd add 2 index put   pop
  1683.  
  1684.       3 index 3 index add 2 div
  1685.             rand 50 mod 25 sub height div 2 depth exp div add
  1686.       Array horz wd add get
  1687.             vert wd 2 mul add 2 index put   pop
  1688.  
  1689.       horz 0 eq
  1690.       { 2 index 1 index add 2 div
  1691.             rand 50 mod 25 sub height div 2 depth exp div add
  1692.       Array horz get
  1693.             vert wd add 2 index put    pop
  1694.       } if
  1695.  
  1696.       vert 0 eq
  1697.       { 1 index 1 index add 2 div
  1698.             rand 50 mod 25 sub height div 2 depth exp div add
  1699.       Array horz wd add get
  1700.             vert 2 index put          pop
  1701.       } if
  1702.  
  1703.       pop pop pop pop
  1704.       .5 .5 translate
  1705.       .5 .5 scale
  1706.       Square
  1707.       2 2 scale
  1708.  
  1709.       /horz horz 2 maxdepth depth sub 1 sub exp cvi add def
  1710.       -.5 0 translate
  1711.       .5 .5 scale
  1712.       Square
  1713.       2 2 scale
  1714.       /horz horz 2 maxdepth depth sub 1 sub exp cvi sub def
  1715.  
  1716.       /vert vert 2 maxdepth depth sub 1 sub exp cvi add def
  1717.       .5 -.5 translate
  1718.       .5 .5 scale
  1719.       Square
  1720.       2 2 scale
  1721.       /vert vert 2 maxdepth depth sub 1 sub exp cvi sub def
  1722.  
  1723.       /horz horz 2 maxdepth depth sub 1 sub exp cvi add def
  1724.       /vert vert 2 maxdepth depth sub 1 sub exp cvi add def
  1725.       -.5 0 translate
  1726.       .5 .5 scale
  1727.       Square
  1728.       2 2 scale
  1729.       /horz horz 2 maxdepth depth sub 1 sub exp cvi sub def
  1730.       /vert vert 2 maxdepth depth sub 1 sub exp cvi sub def
  1731.  
  1732.       } ifelse
  1733.       /depth depth 1 sub def
  1734.  
  1735.    } def
  1736.  
  1737.    /dx Bburx Bbllx sub def
  1738.    /dy Bbury Bblly sub def
  1739.    /hyp dx dup mul dy dup mul add sqrt def
  1740.    Bbllx dx 2 div add  Bblly dy 2 div add translate
  1741.    hyp 1.2 mul dup scale
  1742.    45 rotate
  1743.    -.5 -.5 translate
  1744.  
  1745.    currentscreen
  1746.    3 -1 roll
  1747.    pop 120
  1748.    3 1 roll
  1749.    setscreen
  1750.  
  1751.    0 0 0 0
  1752.    Square
  1753.    4{ pop }repeat
  1754.  
  1755.    } bind def
  1756.  
  1757. %@Fill
  1758. /Leaves %Hojas,5, N·mero(pulgadas2)=50, GrisMßximo=100, GrisMφnimo=0, Tama±oMßximo=100, Tama±oMφnimo=10
  1759.    {
  1760.    /MinSize exch 1 200 InRange def
  1761.    /MaxSize exch MinSize 200 InRange MinSize wDstChck def
  1762.    /MinGrey exch 0 100 InRange def
  1763.    /MaxGrey exch MinGrey 100 InRange def
  1764.    /Number exch 1 250 InRange def
  1765.  
  1766.    eoclip newpath
  1767.    currentscreen
  1768.    3 -1 roll
  1769.    pop 90
  1770.    3 1 roll
  1771.    setscreen
  1772.  
  1773.    /dx Bburx Bbllx sub def
  1774.    /dy Bbury Bblly sub def
  1775.  
  1776.    dx dy mul Number mul 1000000 div cvi
  1777.       {
  1778.       matrix currentmatrix
  1779.  
  1780.       rand dx mod Bbllx add
  1781.       rand dy mod Bblly add
  1782.       translate
  1783.  
  1784.       rand 360 mod
  1785.       rotate
  1786.  
  1787.       MaxSize MinSize eq
  1788.         { Maxsize 10.8 div }
  1789.         { rand MaxSize MinSize sub mod MinSize add 10.8 div } ifelse
  1790.       dup scale
  1791.  
  1792.       17 0 moveto
  1793.       65 -18 106 -13 125 0 curveto
  1794.       106 13  65  18  17 0 curveto
  1795.       gsave
  1796.       MaxGrey MinGrey eq
  1797.         { MaxGrey 100 div }
  1798.         { rand MaxGrey MinGrey sub mod MinGrey add 100 div } ifelse
  1799.       setgray
  1800.       fill
  1801.       grestore
  1802.       0.3 setlinewidth
  1803.       0 setgray
  1804.       stroke
  1805.  
  1806.       setmatrix
  1807.  
  1808.       } repeat
  1809.  
  1810.    } bind def
  1811.  
  1812. %@Fill
  1813. /Mesh %Malla,5, Frecuencia=6, Tama±oCuadrado(%)=80, SombraInferIzda=3, SombraSupDcha=15, Gris1erPlano=100
  1814.    {
  1815.    /ForegroundGray exch 0 100 InRange def
  1816.    /Shadow2 exch 0 100 InRange def
  1817.    /Shadow1 exch 0 100 InRange def
  1818.    /SquareSize exch 1 100 InRange def
  1819.    /Frequency exch 1 25 InRange def
  1820.  
  1821.    /newfont 10 dict def
  1822.    newfont begin
  1823.  
  1824.    /FontMatrix [1         0
  1825.                 0         1
  1826.                 0         0] def
  1827.    /FontType 3 def
  1828.    /FontBBox [0 0 1 1] def
  1829.    /Encoding 256 array def
  1830.    0 1 255 {Encoding exch /.notdef put} for
  1831.  
  1832.    /BuildChar
  1833.      { 1  0
  1834.        -0.1 -0.1 1.1 1.1
  1835.        setcachedevice
  1836.        pop begin
  1837.  
  1838.        0 setlinejoin
  1839.  
  1840.        SquareSize 100 div dup scale
  1841.        0 0 moveto
  1842.        1 0 lineto
  1843.        1 1 lineto
  1844.        0 1 lineto
  1845.        closepath
  1846.  
  1847.        Shadow1 100 div
  1848.        1 Shadow2 100 div sub
  1849.        1 index dup moveto
  1850.        1 index 1 index lineto
  1851.        dup dup lineto
  1852.        dup 2 index lineto
  1853.        closepath
  1854.        2{pop}repeat
  1855.        fill
  1856.  
  1857.        end
  1858.      } def
  1859.    end
  1860.  
  1861.    /pntsize 1000 Frequency div def
  1862.  
  1863.    /FillFont newfont definefont pop
  1864.    /FillFont findfont pntsize scalefont setfont
  1865.  
  1866.    eoclip newpath
  1867.  
  1868.    ForegroundGray 100 div 1 exch sub setgray
  1869.  
  1870.    Bblly pntsize Bbury
  1871.      { Bbllx exch moveto
  1872.        { (a) show
  1873.          currentpoint
  1874.          pop Bburx gt
  1875.          {exit} if
  1876.        } loop
  1877.      } for
  1878.    } bind def
  1879.  
  1880. %@Fill
  1881. /Motifs %Motivos,4, Motivo=1, Frecuencia=2, Espaciado(%)=100, Gris1erPlano=100
  1882.    {
  1883.    /ForegroundGray exch 0 100 InRange def
  1884.    /Spacing exch 1 300 InRange def
  1885.    /Frequency exch 1 25 InRange def
  1886.    /Character exch 1 8 InRange def
  1887.  
  1888.    /str 1 string def
  1889.    str 0 Character put
  1890.  
  1891.    /newfont 10 dict def
  1892.    newfont begin
  1893.  
  1894.    /FontMatrix [.001                0
  1895.                 0                   .001
  1896.                 0                   0] def
  1897.    /FontType 3 def
  1898.    /FontBBox [0 0 500 1000] def
  1899.  
  1900.    /Encoding 256 array def
  1901.    0 1 255 {Encoding exch /.notdef put} for
  1902.    Encoding  1 /CanadianFlag put
  1903.    Encoding  2 /Corels put
  1904.    Encoding  3 /Globe put
  1905.    Encoding  4 /CubeSolid put
  1906.    Encoding  5 /CubeFrame put
  1907.    Encoding  6 /Balls put
  1908.    Encoding  7 /Checkerboard put
  1909.    Encoding  8 /CCCTlogo put
  1910.  
  1911.    /CharProcs 9 dict def
  1912.    CharProcs begin
  1913.    /.notdef {} def
  1914.    /CanadianFlag
  1915.      { 9.6 9.6 scale
  1916.        9 -30 translate
  1917.  
  1918.        -9 60 moveto
  1919.        -9 30 lineto
  1920.        -1 30 lineto
  1921.        -1 60 lineto
  1922.        closepath
  1923.  
  1924.        43 60 moveto
  1925.        43 30 lineto
  1926.        35 30 lineto
  1927.        35 60 lineto
  1928.        closepath
  1929.  
  1930.        17 58 moveto
  1931.        15 54 lineto
  1932.        12 55 lineto
  1933.        14 47 lineto
  1934.        10 51 lineto
  1935.        10 49 lineto
  1936.        05 50 lineto
  1937.        07 45 lineto
  1938.        05 45 lineto
  1939.        12 39 lineto
  1940.        10 37 lineto
  1941.        16.5 38 lineto
  1942.        16.5 32 lineto
  1943.        17.5 32 lineto
  1944.        17.5 38 lineto
  1945.        24 37 lineto
  1946.        22 39 lineto
  1947.        29 45 lineto
  1948.        27 45 lineto
  1949.        29 50 lineto
  1950.        24 49 lineto
  1951.        24 51 lineto
  1952.        20 47 lineto
  1953.        22 55 lineto
  1954.        19 54 lineto
  1955.        closepath
  1956.  
  1957. %       0.3 setlinewidth
  1958. %       stroke
  1959.        fill
  1960.        } def
  1961.    /Corels
  1962.        { 250 250 translate
  1963.        113 113 scale
  1964.  
  1965.        7 { 45 rotate
  1966.          gsave
  1967.          1 2 sqrt div 1 add 0 translate
  1968.          .5 .5 moveto
  1969.          -.5 .5 lineto
  1970.          -.5 -.5 lineto
  1971.          .5 -.5 lineto
  1972.          closepath
  1973.          fill
  1974.          grestore
  1975.          } repeat
  1976.        } def
  1977.    /Globe
  1978.        {
  1979.        250 250 translate
  1980.        250 250 scale
  1981.        0 1 4
  1982.           { matrix currentmatrix exch
  1983.           22.5 mul sin
  1984.           1 scale
  1985.           0 0 1 90 450 arc
  1986.           setmatrix
  1987.           } for
  1988.  
  1989.        -3 1 3
  1990.           { 22.5 mul sin
  1991.           dup
  1992.           dup mul 1 sub neg sqrt
  1993.           dup neg 2 index moveto
  1994.           exch lineto
  1995.           } for
  1996.  
  1997.        .01 setlinewidth
  1998.        stroke
  1999.        } def
  2000.    /CubeSolid
  2001.        {
  2002.        250 250 translate
  2003.        145 145 scale
  2004.        /Rotm
  2005.           { 30 matrix rotate transform
  2006.           exch 3 1 roll
  2007.           30 matrix rotate transform
  2008.           pop exch
  2009.           moveto
  2010.           } bind def
  2011.        /Rotl
  2012.           { 30 matrix rotate transform
  2013.           exch 3 1 roll
  2014.           30 matrix rotate transform
  2015.           pop exch
  2016.           lineto
  2017.           } bind def
  2018.  
  2019.         1  1  1 Rotm
  2020.        -1  1  1 Rotl
  2021.        -1 -1  1 Rotl
  2022.         1 -1  1 Rotl
  2023.        closepath
  2024.  
  2025.        -1  1  1 Rotm
  2026.        -1  1 -1 Rotl
  2027.         1  1 -1 Rotl
  2028.         1 -1 -1 Rotl
  2029.         1 -1  1 Rotl
  2030.  
  2031.         1  1  1 Rotm
  2032.         1  1 -1 Rotl
  2033.  
  2034.        .01 setlinewidth
  2035.        stroke
  2036.        } def
  2037.    /CubeFrame
  2038.        {
  2039.        250 250 translate
  2040.        145 145 scale
  2041.        /Rotm
  2042.           { 30 matrix rotate transform
  2043.           exch 3 1 roll
  2044.           30 matrix rotate transform
  2045.           pop exch
  2046.           moveto
  2047.           } bind def
  2048.        /Rotl
  2049.           { 30 matrix rotate transform
  2050.           exch 3 1 roll
  2051.           30 matrix rotate transform
  2052.           pop exch
  2053.           lineto
  2054.           } bind def
  2055.  
  2056.         1  1  1 Rotm
  2057.        -1  1  1 Rotl
  2058.        -1 -1  1 Rotl
  2059.         1 -1  1 Rotl
  2060.        closepath
  2061.  
  2062.         1  1 -1 Rotm
  2063.        -1  1 -1 Rotl
  2064.        -1 -1 -1 Rotl
  2065.         1 -1 -1 Rotl
  2066.        closepath
  2067.  
  2068.         1  1  1 Rotm
  2069.         1  1 -1 Rotl
  2070.        -1  1  1 Rotm
  2071.        -1  1 -1 Rotl
  2072.        -1 -1  1 Rotm
  2073.        -1 -1 -1 Rotl
  2074.         1 -1  1 Rotm
  2075.         1 -1 -1 Rotl
  2076.  
  2077.        .01 setlinewidth
  2078.        stroke
  2079.        } def
  2080.    /Balls
  2081.        { 250 250 translate
  2082.        225 225 scale
  2083.  
  2084.        0 0 1.1 0 360 arc
  2085.        -0.32  0.55 translate
  2086.        30 rotate
  2087.        1 2 div  1 3 div scale
  2088.        0 0 1.1 360 0 arcn
  2089.        fill
  2090.        } def
  2091.    /Checkerboard
  2092.        { 0 0 moveto
  2093.        500 0 lineto
  2094.        500 500 lineto
  2095.        0 500 lineto
  2096.        closepath
  2097.        fill
  2098.        } def
  2099.    /CCCTlogo
  2100.        {
  2101.        4.8 4.8 scale
  2102.        -21 -26 translate
  2103.  
  2104.        36.4 28.4 moveto
  2105.        70 38 35 196 176.7 arcn
  2106.        35.1 40 35 42 24 41 curveto
  2107.        21 37 24 38 22 32 curveto
  2108.        21 28 25 27 28 28 curveto
  2109.        33 26 32 30 36.4 28.4 curveto
  2110.  
  2111.        36.5 48.2 moveto
  2112.        70 38 35 163.1 144.5 arcn
  2113.        40 59 39 60 36 61 curveto
  2114.        33 63 29 62 27 61 curveto
  2115.        24 58 29 55 26 54 curveto
  2116.        24 53 25 50 25 50 curveto
  2117.        28 47 30 44 36.5 48.2 curveto
  2118.  
  2119.        44.3 61.7 moveto
  2120.        70 38 35 137.3 111.5 arcn
  2121.        56 81 52 75 53 81 curveto
  2122.        52 87 50 81 46 84 curveto
  2123.        37 84 40 80 40 76 curveto
  2124.        42 70 35 73 44.3 61.7 curveto
  2125.  
  2126.        60.8 71.8 moveto
  2127.        70 38 35 105.3 80.0 arcn
  2128.        78 72 78 76 77 80 curveto
  2129.        77 81 80 82 79 83 curveto
  2130.        77 85 74 84 70 85 curveto
  2131.        65 85 69 80 62 80 curveto
  2132.        59 77 61 74 60.8 71.8 curveto
  2133.  
  2134.        97.1 60.1 moveto
  2135.        70 38 35 39.2 66.4 arc
  2136.        81 74 82 78 85 81 curveto
  2137.        91 81 98 84 95 76 curveto
  2138.        98 74 115 77 103 72 curveto
  2139.        101 68 100 61 97.1 60.1 curveto
  2140.  
  2141.        100 56 moveto
  2142.        70 38 35 31 11.6 arcn
  2143.        113 42 114 49 118 50 curveto
  2144.        115 57 123 56 120 60 curveto
  2145.        115 60 116 64 109 63 curveto
  2146.        104 62 107 57 100 56 curveto
  2147.  
  2148.        105 39 moveto
  2149.        70 38 35 1.6 -14.8 arcn
  2150.        107 27 110 28 112 27 curveto
  2151.        115 27 111 31 118 32 curveto
  2152.        120 33 125 33 122 36 curveto
  2153.        121 37 119 38 117 39 curveto
  2154.        113 46 112 39 105 39 curveto
  2155.  
  2156.        fill
  2157.     } def
  2158.    end
  2159.  
  2160.    /BuildChar
  2161.      {Spacing 100 div 500 mul  dup
  2162.       -0.1 -0.1 500.1 1000.1
  2163.       setcachedevice
  2164.       exch begin
  2165.       Encoding exch get
  2166.       CharProcs exch get
  2167.       end
  2168.       exec
  2169.      }def
  2170.    end
  2171.  
  2172.    /pntsize 100000 Frequency div Spacing div def
  2173.  
  2174.    /FillFont newfont definefont pop
  2175.    /FillFont findfont pntsize scalefont setfont
  2176.  
  2177.    /increment Spacing 100 div pntsize mul def
  2178.  
  2179.    eoclip newpath
  2180.    ForegroundGray 100 div 1 exch sub setgray
  2181.    Bblly increment Bbury
  2182.      { Bbllx 1 index moveto
  2183.        { str show
  2184.          currentpoint
  2185.          dup 3 index sub
  2186.          increment 2.1 div gt { increment sub } if
  2187.          1 index Bburx gt
  2188.          {pop pop pop exit} if
  2189.          moveto
  2190.        } loop
  2191.      } for
  2192.    } bind def
  2193.  
  2194. %@Fill
  2195. /Octagons %Oct≤gonos,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  2196.    {
  2197.    /BackgroundGray exch -1 100 InRange def
  2198.    /ForegroundGray exch 0 100 InRange def
  2199.    /Linewidth      exch 0 100 InRange def
  2200.    /Frequency      exch 2 100 InRange def
  2201.  
  2202.    /newfont 10 dict def
  2203.    newfont begin
  2204.  
  2205.    /FontMatrix [1 2 sqrt 1 add div  0
  2206.                 0                   1 2 sqrt 1 add div
  2207.                 0                   0] def
  2208.    /FontType 3 def
  2209.    /FontBBox [0 0 2 sqrt 1 add 2 sqrt 1 add] def
  2210.    /Encoding 256 array def
  2211.    0 1 255 {Encoding exch /.notdef put} for
  2212.  
  2213.    /BuildChar
  2214.      { 2 sqrt 1 add  0
  2215.        -0.5 -0.5 2 sqrt 1.5 add 2 sqrt 1.5 add
  2216.        setcachedevice
  2217.        pop begin
  2218.  
  2219.        1 2 sqrt div  0 moveto
  2220.        1 2 sqrt div 1 add  0 lineto
  2221.        2 sqrt 1 add  1 2 sqrt div lineto
  2222.        2 sqrt 1 add  1 2 sqrt div 1 add lineto
  2223.        1 2 sqrt div 1 add  2 sqrt 1 add lineto
  2224.        1 2 sqrt div  2 sqrt 1 add lineto
  2225.        0  1 2 sqrt div 1 add lineto
  2226.        0  1 2 sqrt div lineto
  2227.        closepath
  2228.  
  2229.        Linewidth pntsize div 2 sqrt 1 add mul setlinewidth
  2230.        stroke
  2231.  
  2232.       end
  2233.      } def
  2234.    end
  2235.  
  2236.    /pntsize 1000 Frequency div def
  2237.    /FillFont newfont definefont pop
  2238.    /FillFont findfont pntsize scalefont setfont
  2239.  
  2240.    eoclip
  2241.    BackgroundGray 0 ge
  2242.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2243.       { newpath } ifelse
  2244.  
  2245.    ForegroundGray 100 div 1 exch sub setgray
  2246.  
  2247.    Bblly pntsize Bbury
  2248.      { Bbllx pntsize Bburx
  2249.        { 1 index moveto
  2250.        (a) show
  2251.        } for
  2252.      pop
  2253.      } for
  2254.    } bind def
  2255.  
  2256. %@Fill
  2257. /Patio %Patio,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  2258.    {
  2259.    /BackgroundGray exch -1 100 InRange def
  2260.    /ForegroundGray exch 0 100 InRange def
  2261.    /Linewidth      exch 0 100 InRange def
  2262.    /Frequency      exch 2 100 InRange def
  2263.  
  2264.    /newfont 10 dict def
  2265.    newfont begin
  2266.  
  2267.    /FontMatrix [2 7 div             0
  2268.                 0                   2 7 div
  2269.                 0                   0] def
  2270.    /FontType 3 def
  2271.    /FontBBox [0 0 3 sqrt 2 mul  7 2 div] def
  2272.    /Encoding 256 array def
  2273.    0 1 255 {Encoding exch /.notdef put} for
  2274.  
  2275.    /BuildChar
  2276.      { 3 sqrt 3 mul 2 div  3 2 div
  2277.        -0.5 -0.5 3 sqrt 2 mul 0.5 add 7 2 div 0.5 add
  2278.        setcachedevice
  2279.        pop begin
  2280.  
  2281.        3 sqrt  3 2 div  translate
  2282.        3 sqrt 2 div  1 2 div  moveto
  2283.        3 { 120 rotate
  2284.            3 sqrt 2 div  -3 2 div lineto
  2285.            3 sqrt  -1 lineto
  2286.            3 sqrt  0 lineto
  2287.            3 sqrt 2 div  1 2 div lineto
  2288.          } repeat
  2289.  
  2290.        Linewidth pntsize div 7 2 div mul setlinewidth
  2291.        stroke
  2292.  
  2293.        end
  2294.      } def
  2295.    end
  2296.  
  2297.    /pntsize 1250 Frequency div def
  2298.  
  2299.    /FillFont newfont definefont pop
  2300.    /FillFont findfont pntsize scalefont setfont
  2301.  
  2302.    /Pointsize pntsize 6 mul 7 div def
  2303.  
  2304.    eoclip
  2305.    BackgroundGray 0 ge
  2306.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2307.       { newpath } ifelse
  2308.  
  2309.    ForegroundGray 100 div 1 exch sub setgray
  2310.  
  2311.    Bblly Pointsize Bbury
  2312.      { Bbllx 1 index moveto
  2313.        { (a) show
  2314.          currentpoint
  2315.          dup 3 index sub
  2316.          Pointsize 2 div gt { Pointsize sub } if
  2317.          1 index Bburx gt
  2318.          {pop pop pop exit} if
  2319.          moveto
  2320.        } loop
  2321.      } for
  2322.    } bind def
  2323.  
  2324. %@Fill
  2325. /Rectangles %Rectßngulos,5, Area=100, N·mero=50, AnchoLφnea=5, Gris=0, Funci≤nAleatoria=0
  2326.    {
  2327.    srand
  2328.    /Grey exch 0 100 InRange def
  2329.    /Linewidth exch 0 100 InRange def
  2330.    /Number exch 1 200 InRange def
  2331.    /area exch 10 300 InRange def
  2332.  
  2333.    /dx Bburx Bbllx sub 2 mul def
  2334.    /dy Bbury Bblly sub 2 mul def
  2335.    /Area area 10000 mul def
  2336.  
  2337.    eoclip newpath
  2338.  
  2339.    Linewidth setlinewidth
  2340.    Bbllx dx 2 div sub  Bblly dy 2 div sub  translate
  2341.  
  2342. %   Area log
  2343.    Number {
  2344.       rand dx mod rand dy mod moveto
  2345. %      rand 180 mod 90 sub 100 div dup  dup mul 1 exch sub sqrt
  2346. %      exch atan 180 div 1 index mul 10 exch exp
  2347.       rand Area mod rand Area mod mul sqrt sqrt
  2348.       dup 0 rlineto
  2349.       0 Area 2 index div rlineto
  2350.       dup neg 0 rlineto
  2351.       closepath
  2352.       pop
  2353.  
  2354.       gsave
  2355.       Grey 100 div 1 exch sub setgray
  2356.       fill
  2357.       grestore
  2358.       0 setgray
  2359.       stroke
  2360.       } repeat
  2361.  
  2362.    } bind def
  2363.  
  2364. %@Fill
  2365. /Reptiles %Reptiles,5, Frecuencia=4, Gris1=60, Gris2=30, Gris3=0, AnchoLφnea=8
  2366. {
  2367.   /LineWidth exch 0 250 InRange def
  2368.   /Gray3 exch 0 100 InRange 100 div def
  2369.   /Gray2 exch -1 100 InRange 100 div def
  2370.   /Gray1 exch -1 100 InRange 100 div def
  2371.   /Frequency exch 1 100 InRange def
  2372.  
  2373.   /newfont 10 dict def
  2374.   newfont begin
  2375.  
  2376.   /FontMatrix [2 7 div             0
  2377.                0                   2 7 div
  2378.                0                   0] def
  2379.   /FontType 3 def
  2380.   /FontBBox [-1.73 -1.86 2.36 2.0] def
  2381.   /Encoding 256 array def
  2382.   0 1 255 {Encoding exch /.notdef put} for
  2383.   Encoding 97 /ReptilesStroked put
  2384.   Encoding 98 /ReptileFilled put
  2385.  
  2386.   /CharProcs 3 dict def
  2387.   CharProcs begin
  2388.   /.notdef {} def
  2389.   /ReptilesStroked
  2390.   {
  2391.     %3 sqrt  3 2 div  translate
  2392.  
  2393.     3 sqrt 2 div  1 2 div  moveto
  2394.     3
  2395.     {
  2396.       120 rotate
  2397.  
  2398.       0     0    moveto
  2399.       0.32 -0.40 lineto
  2400.       0.32 -0.48 lineto
  2401.       0    -0.72 lineto
  2402.  
  2403.       0.05 -1.03 moveto
  2404.       0.4  -0.76 lineto
  2405.       0.84 -0.84 lineto
  2406.       0.5  -0.96 lineto
  2407.       0.31 -1.18 lineto
  2408.  
  2409.       0.87 -1.5  moveto
  2410.       0.58 -1.28 lineto
  2411.       0.8  -1.14 lineto
  2412.       0.94 -1.18 lineto
  2413.       1.24 -1.08 lineto
  2414.       1.42 -1.18 lineto
  2415.  
  2416.       1.68 -1.02 moveto
  2417.       1.52 -0.84 lineto
  2418.       1.64 -0.66 lineto
  2419.       1.73 -0.36 lineto
  2420.  
  2421.       1.73  0    moveto
  2422.       1.41 -0.26 lineto
  2423.       1.32 -0.49 lineto
  2424.       1.06 -0.24 lineto
  2425.       1.42  0.18 lineto
  2426.  
  2427.       0.87  0.57 moveto
  2428.       0.87  0.26 lineto
  2429.       0.99  0.26 lineto
  2430.       1.05  0.12 lineto
  2431.       0.82 -0.07 lineto
  2432.       0.68 -0.07 lineto
  2433.       0.62  0.36 lineto
  2434.  
  2435.  
  2436.       3 sqrt 2 div  1 2 div moveto
  2437.  
  2438.     } repeat
  2439.  
  2440.     LineWidth Pointsize div 7 2 div mul setlinewidth
  2441.     stroke
  2442.  
  2443.   } def
  2444.   /ReptileFilled
  2445.   {
  2446.     0     0    moveto
  2447.     0.32 -0.40 lineto
  2448.     0.32 -0.48 lineto
  2449.     0    -0.72 lineto
  2450.  
  2451.    -0.40 -0.55 lineto
  2452.    -0.47 -0.68 lineto
  2453.    -0.42 -0.97 lineto
  2454.    -0.27 -0.99 lineto
  2455.    -0.21 -0.88 lineto
  2456.  
  2457.     0.05 -1.03 lineto
  2458.     0.4  -0.76 lineto
  2459.     0.84 -0.84 lineto
  2460.     0.5  -0.96 lineto
  2461.     0.31 -1.18 lineto
  2462.  
  2463.     0.32 -1.39 lineto
  2464.     0.55 -1.60 lineto
  2465.     0.59 -1.74 lineto
  2466.     0.82 -1.86 lineto
  2467.  
  2468.     0.87 -1.5  lineto
  2469.     0.58 -1.28 lineto
  2470.     0.8  -1.14 lineto
  2471.     0.94 -1.18 lineto
  2472.     1.24 -1.08 lineto
  2473.     1.42 -1.18 lineto
  2474.     1.52 -1.45 lineto
  2475.     1.45 -1.81 lineto
  2476.     1.74 -1.47 lineto
  2477.     1.68 -1.02 lineto
  2478.     1.52 -0.84 lineto
  2479.     1.64 -0.66 lineto
  2480.     1.73 -0.36 lineto
  2481.     2.28 -0.46 lineto
  2482.     2.36 -0.11 lineto
  2483.     2.12 -0.15 lineto
  2484.     1.73  0    lineto
  2485.     1.41 -0.26 lineto
  2486.     1.32 -0.49 lineto
  2487.     1.06 -0.24 lineto
  2488.     1.42  0.18 lineto
  2489.     1.21  0.41 lineto
  2490.     1.11  0.60 lineto
  2491.  
  2492.     0.87  0.57 lineto
  2493.     0.87  0.26 lineto
  2494.     0.99  0.26 lineto
  2495.     1.05  0.12 lineto
  2496.     0.82 -0.07 lineto
  2497.     0.68 -0.07 lineto
  2498.     0.62  0.36 lineto
  2499.     0.26  0.52 lineto
  2500.     0.19  0.48 lineto
  2501.     closepath
  2502.     fill
  2503.   } def
  2504.   end
  2505.  
  2506.   /BuildChar
  2507.   {
  2508.     3 sqrt 3 mul 2 div  3 2 div
  2509.     -1.83 -1.96 2.46 2.1
  2510.     setcachedevice
  2511.     exch begin
  2512.     Encoding exch get
  2513.     CharProcs exch get
  2514.     end
  2515.     exec
  2516.   } def
  2517.   end
  2518.  
  2519.   /Pointsize 2000 Frequency div def
  2520.  
  2521.   /FillFont newfont definefont pop
  2522.   /FillFont findfont Pointsize scalefont setfont
  2523.  
  2524.   /pntsize Pointsize 6 mul 7 div def
  2525.   /HeightDiff Pointsize 2 mul 7 div .49 mul def
  2526.  
  2527.   eoclip newpath
  2528.  
  2529.   currentscreen
  2530.   3 -1 roll
  2531.   pop 120
  2532.   3 1 roll
  2533.   setscreen
  2534.  
  2535.   Bblly pntsize Bbury pntsize add HeightDiff add
  2536.   {
  2537.     Bbllx 1 index moveto
  2538.     {
  2539.       currentpoint
  2540.       1 index exch
  2541.  
  2542.       2 copy 2 copy translate
  2543.       240 rotate
  2544.       Gray1 0 ge
  2545.       { Gray1 1 exch sub setgray
  2546.         (b) show
  2547.       } if
  2548.       0 0 moveto
  2549.       -240 rotate
  2550.       neg exch neg exch translate
  2551.  
  2552.       2 copy translate
  2553.       120 rotate
  2554.       Gray2 0 ge
  2555.       { Gray2 1 exch sub setgray
  2556.         (b) show
  2557.       } if
  2558.       0 0 moveto
  2559.       -120 rotate
  2560.       neg exch neg exch translate
  2561.  
  2562.       Gray3 1 exch sub setgray
  2563.       (b) show
  2564.  
  2565.       currentpoint
  2566.       dup 4 index sub
  2567.       pntsize 2.1 div gt { pntsize sub } if
  2568.       3 -1 roll Bburx gt
  2569.       {pop pop pop exit} if
  2570.       moveto
  2571.     } loop
  2572.   } for
  2573.  
  2574.   LineWidth 0 gt
  2575.   {
  2576.     0 setgray
  2577.     Bblly pntsize Bbury pntsize add
  2578.     {
  2579.       Bbllx 1 index moveto
  2580.       {
  2581.         (a) show
  2582.         currentpoint
  2583.         dup 3 index sub
  2584.         pntsize 2.1 div gt { pntsize sub } if
  2585.         1 index Bburx gt
  2586.         {pop pop pop exit} if
  2587.         moveto
  2588.       } loop
  2589.     } for
  2590.   } if
  2591. } bind def
  2592.  
  2593. %@Fill
  2594. /SpiderWeb %Telara±a,5, AnchoLφnea=5, Separaci≤n=300, AnguloMßximo=40, AnguloMφnimo=10, Funci≤nAleatoria=0
  2595.    { srand
  2596.    /MinAng exch 2 90 InRange def
  2597.    /MaxAng exch MinAng 90 InRange MinAng wDstChck def
  2598.    /Sep exch 10 500 InRange def
  2599.    /Linewidth exch 0 100 InRange def
  2600.  
  2601.    eoclip
  2602.    newpath
  2603.  
  2604.    /dx Bburx Bbllx sub def
  2605.    /dy Bbury Bblly sub def
  2606.    /hyp dx dup mul dy dup mul add sqrt def
  2607.    /DifAng MaxAng MinAng sub def
  2608.  
  2609.    Bbllx Bblly translate
  2610.    dx 2 div dy 2 div translate
  2611.  
  2612.    /theta 0 def
  2613.    /dtheta 0 def
  2614.  
  2615.    {  0 0 moveto
  2616.  
  2617.       /theta theta dtheta add def
  2618.       theta 360 ge
  2619.         { exit } if
  2620.       /dtheta rand DifAng mod MinAng add def
  2621.       theta dtheta add 350 gt
  2622.         { /dtheta 360 theta sub def } if
  2623.  
  2624.       hyp theta cos mul hyp theta sin mul lineto
  2625.  
  2626.       0 Sep hyp
  2627.          {
  2628.          dup theta cos mul
  2629.          1 index theta sin mul
  2630.          moveto
  2631.  
  2632.          dup theta dtheta add cos theta cos add mul
  2633.          1 index theta dtheta add sin theta sin add mul
  2634.          2 index
  2635.          theta 180 add dtheta add
  2636.          theta 180 add
  2637.          arcn
  2638.  
  2639.          pop
  2640.          } for
  2641.       Linewidth setlinewidth
  2642.       stroke
  2643.       } loop
  2644.    } bind def
  2645.  
  2646. %@Fill
  2647. /Spirals %Espirales,4, Tama±o=150, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  2648.    {
  2649.    /BackgroundGrey exch -1 100 InRange def
  2650.    /ForegroundGray exch 0 100 InRange def
  2651.    /Linewidth exch 0 100 InRange def
  2652.    /Size exch 10 500 InRange def
  2653.  
  2654.    eoclip
  2655.    BackgroundGrey 0 ge
  2656.       { BackgroundGrey 100 div 1 exch sub setgray fill }
  2657.       { newpath } ifelse
  2658.  
  2659.    /cx Bburx Bbllx add 2 div def
  2660.    /cy Bbury Bblly add 2 div def
  2661.    /pntsize2 Size 2 div def
  2662.    /cy2 cy pntsize2 add def
  2663.    /hyp Bburx Bbllx sub dup mul
  2664.         Bbury Bblly sub dup mul
  2665.         add sqrt 2 div def
  2666.  
  2667.    ForegroundGray 100 div 1 exch sub setgray
  2668.  
  2669.    Linewidth setlinewidth
  2670.    0 Size hyp
  2671.       { cx cy 2 index 90 270 arc
  2672.         cx cy2 2 index pntsize2 add -90 90 arc
  2673.         pop
  2674.       } for
  2675.    stroke
  2676.    } bind def
  2677.  
  2678. %@Fill
  2679. /Spokes %Rayos,5, N·mero=120, AnchoLφnea=5, Horizontal=0, Vertical=0, Gris1erPlano=100
  2680.         { %def -- Fill function that fills with spokes
  2681.         /ForegroundGray exch 0 100 InRange def
  2682.     /wY exch 0 100 InRange def
  2683.     /wX exch 0 100 InRange def
  2684.     /LineWidth exch 0 100 InRange def
  2685.     /Number exch 4 360 InRange def
  2686.  
  2687.         eoclip
  2688.         newpath
  2689.         /Flen Bburx Bbllx sub dup mul Bbury Bblly sub dup mul add sqrt def
  2690.         Bbllx Bblly translate
  2691.     Bburx Bbllx sub wX mul 100 div  Bbury Bblly sub wY mul 100 div translate
  2692.  
  2693.     360 Number div
  2694.         Number {
  2695.            0 0 moveto
  2696.            Flen 0 lineto
  2697.            dup rotate
  2698.            } repeat
  2699.         pop
  2700.         ForegroundGray 100 div 1 exch sub setgray
  2701.     LineWidth setlinewidth
  2702.     stroke
  2703.         } bind def
  2704.  
  2705. %@Fill
  2706. /Squares %Cuadrados,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  2707.    {
  2708.    /BackgroundGray exch -1 100 InRange def
  2709.    /ForegroundGray exch 0 100 InRange def
  2710.    /Linewidth      exch 0 100 InRange def
  2711.    /Frequency      exch 2 100 InRange def
  2712.  
  2713.    /newfont 10 dict def
  2714.    newfont begin
  2715.  
  2716.    /FontMatrix [1  0  0
  2717.                 1  0  0] def
  2718.    /FontType 3 def
  2719.    /FontBBox [0 0 1 1] def
  2720.    /Encoding 256 array def
  2721.    0 1 255 {Encoding exch /.notdef put} for
  2722.  
  2723.    /BuildChar
  2724.      { 1  0
  2725.        -0.1 -0.1 1.1 1.1
  2726.        setcachedevice
  2727.        pop begin
  2728.  
  2729.        0 0 moveto
  2730.        0 1 lineto
  2731.        1 1 lineto
  2732.        1 0 lineto
  2733.  
  2734.        Linewidth pntsize div setlinewidth
  2735.        stroke
  2736.  
  2737.       end
  2738.      } def
  2739.    end
  2740.  
  2741.    /pntsize 1000 Frequency div def
  2742.  
  2743.    /FillFont newfont definefont pop
  2744.    /FillFont findfont pntsize scalefont setfont
  2745.  
  2746.    eoclip
  2747.    BackgroundGray 0 ge
  2748.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2749.       { newpath } ifelse
  2750.  
  2751.    ForegroundGray 100 div 1 exch sub setgray
  2752.  
  2753.    Bblly pntsize Bbury
  2754.      { Bbllx exch moveto
  2755.        { (a) show
  2756.          currentpoint
  2757.          pop Bburx gt
  2758.          {exit} if
  2759.        } loop
  2760.      } for
  2761.    } bind def
  2762.  
  2763. %@Fill
  2764. /StarOfDavid %EstrellaDeDavid,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  2765.    {
  2766.    /BackgroundGray exch -1 100 InRange def
  2767.    /ForegroundGray exch 0 100 InRange def
  2768.    /Linewidth      exch 0 100 InRange def
  2769.    /Frequency      exch 2 100 InRange def
  2770.  
  2771.    /newfont 10 dict def
  2772.    newfont begin
  2773.  
  2774.    /FontMatrix [1 3 sqrt 2 mul div  0
  2775.                 0                   1 3 sqrt 2 mul div
  2776.                 0                   0] def
  2777.    /FontType 3 def
  2778.    /FontBBox [0 0 2 3 sqrt 2 mul] def
  2779.    /Encoding 256 array def
  2780.    0 1 255 {Encoding exch /.notdef put} for
  2781.  
  2782.    /BuildChar
  2783.      { 1  3 sqrt
  2784.        -0.1 -0.1 2.1 3 sqrt 2 mul 0.1 add
  2785.        setcachedevice
  2786.        pop begin
  2787.  
  2788.        1 2 div  0 moveto
  2789.        3 2 div  0 lineto
  2790.        2  3 sqrt 2 div lineto
  2791.        3 2 div  3 sqrt lineto
  2792.        1 2 div  3 sqrt lineto
  2793.        0  3 sqrt 2 div lineto
  2794.        closepath
  2795.  
  2796.        Linewidth pntsize div 3 sqrt 2 mul mul setlinewidth
  2797.        stroke
  2798.  
  2799.       end
  2800.      } def
  2801.    end
  2802.  
  2803.    /pntsize 1732 Frequency div def
  2804.  
  2805.    /FillFont newfont definefont pop
  2806.    /FillFont findfont pntsize scalefont setfont
  2807.  
  2808.    eoclip
  2809.    BackgroundGray 0 ge
  2810.       { BackgroundGray 100 div 1 exch sub setgray fill }
  2811.       { newpath } ifelse
  2812.  
  2813.    ForegroundGray 100 div 1 exch sub setgray
  2814.  
  2815.    Bblly pntsize Bbury
  2816.      { Bbllx pntsize sub 1 index moveto
  2817.        { (a) show
  2818.          currentpoint
  2819.          dup 3 index sub
  2820.          pntsize 2.1 div gt { pntsize sub } if
  2821.          1 index Bburx gt
  2822.          {pop pop pop exit} if
  2823.          moveto
  2824.        } loop
  2825.      } for
  2826.    } bind def
  2827.  
  2828. %@Fill
  2829. /Stars %Estrellas,4, N·mero=100, Tama±oMßximo=300, Tama±oMφnimo=3, Funci≤nAleatoria=0
  2830.    { srand
  2831.    /MinSize exch 1 1000 InRange def
  2832.    /MaxSize exch MinSize 1000 InRange def
  2833.    /Number exch 1 2000 InRange def
  2834.  
  2835.    /newfont 10 dict def
  2836.    newfont begin
  2837.  
  2838.    /FontMatrix [1  0  0
  2839.                 1  0  0] def
  2840.    /FontType 3 def
  2841.    /FontBBox [0 0 1 1] def
  2842.    /Encoding 256 array def
  2843.    0 1 255 {Encoding exch /.notdef put} for
  2844.  
  2845.    /BuildChar
  2846.      { 1  0
  2847.        -0.1 -0.1 1.1 1.1
  2848.        setcachedevice
  2849.        pop begin
  2850.  
  2851.        1 .5 moveto
  2852.        .5 .5 .5 0 360 arc
  2853.        fill
  2854.  
  2855.        end
  2856.      } def
  2857.    end
  2858.  
  2859.    /FillFont newfont definefont pop
  2860.    /FillFont findfont 2 scalefont setfont
  2861.  
  2862.    /dx Bburx Bbllx sub def
  2863.    /dy Bbury Bblly sub def
  2864.  
  2865.    eoclip
  2866.    0 setgray
  2867.    fill
  2868.  
  2869.    1 setgray
  2870.    /mtx matrix currentmatrix def
  2871.    dx dy mul Number mul 100000 div cvi
  2872.       { rand dx mod Bbllx add
  2873.       rand dy mod Bblly add
  2874.       moveto
  2875.       MaxSize rand  MaxSize MinSize div cvi  mod 1 add div 10 div
  2876.       dup scale
  2877.       (a) show
  2878.       mtx setmatrix
  2879.       } repeat
  2880.  
  2881.    } bind def
  2882.  
  2883. %@Fill
  2884. /StarShapes %FormaDeEstrella,5, Puntos=5, Frecuencia=2, Espaciado=100, Angulo=36, Gris=100
  2885.    {
  2886.    /Grey exch 0 100 InRange def
  2887.    /Theta exch 1 90 InRange def
  2888.    /Spacing exch 1 300 InRange def
  2889.    /Frequency exch 1 25 InRange def
  2890.    /Points exch 1 15 InRange def
  2891.  
  2892.    /str 1 string def
  2893.    str 0 Points put
  2894.  
  2895.    /newfont 10 dict def
  2896.    newfont begin
  2897.  
  2898.    /FontMatrix [.001                0
  2899.                 0                   .001
  2900.                 0                   0] def
  2901.    /FontType 3 def
  2902.    /FontBBox [0 0 500 1000] def
  2903.  
  2904.    /Encoding 256 array def
  2905.    0 1 255 {Encoding exch /.notdef put} for
  2906.  
  2907.    /BuildChar
  2908.      {Spacing 100 div 500 mul  dup
  2909.       -0.1 -0.1 500.1 1000.1
  2910.       setcachedevice
  2911.       exch begin
  2912.  
  2913.       250 250 translate
  2914.       250 250 scale
  2915.       90 rotate
  2916.  
  2917.       dup
  2918.       180 exch div dup sin exch cos div
  2919.       Theta 2 div dup sin exch cos div
  2920.  
  2921.       1 0 moveto
  2922.       2 index
  2923.          {
  2924.          360 3 index div rotate
  2925.          dup dup 3 index add div
  2926.          dup 3 index mul neg
  2927.          lineto
  2928.          1 0 lineto
  2929.          } repeat
  2930.       closepath
  2931.  
  2932.       fill
  2933.       pop pop pop
  2934.  
  2935.       end
  2936.      }def
  2937.    end
  2938.  
  2939.    /pntsize 100000 Frequency div Spacing div def
  2940.  
  2941.    /FillFont newfont definefont pop
  2942.    /FillFont findfont pntsize scalefont setfont
  2943.  
  2944.    /increment Spacing 100 div pntsize mul def
  2945.  
  2946.    eoclip newpath
  2947.  
  2948.    Grey 100 div 1 exch sub setgray
  2949.    Bblly increment Bbury
  2950.      { Bbllx 1 index moveto
  2951.        { str show
  2952.          currentpoint
  2953.          dup 3 index sub
  2954.          increment 2.1 div gt { increment sub } if
  2955.          1 index Bburx gt
  2956.          {pop pop pop exit} if
  2957.          moveto
  2958.        } loop
  2959.      } for
  2960.    } bind def
  2961.  
  2962. %@Fill
  2963. /StoneWall %MuroDePiedra,4, Frecuencia=15, GrisMßximo=100, GrisMφnimo=0, AnchoLφnea=5
  2964.    {
  2965.    /Linewidth exch 0 100 InRange def
  2966.    /MinGrey exch 0 100 InRange def
  2967.    /MaxGrey exch MinGrey 100 InRange def
  2968.    /Frequency exch 1 50 InRange def
  2969.  
  2970.    /DifGrey MaxGrey MinGrey sub def
  2971.    DifGrey 0 eq
  2972.       { /DifGrey 1 def
  2973.       } if
  2974.    Linewidth Frequency mul 250 div setlinewidth
  2975.    eoclip newpath
  2976.    0 srand
  2977.  
  2978.    currentscreen
  2979.    3 -1 roll
  2980.    pop 100
  2981.    3 1 roll
  2982.    setscreen
  2983.  
  2984.    /dy Bbury Bblly sub def
  2985.    /dx Bburx Bbllx sub def
  2986.    Bbllx Bbury translate
  2987.    250 Frequency div dup scale
  2988.  
  2989.    dy 920 div Frequency mul cvi {
  2990.       0 0 moveto
  2991.       /x0 0 def
  2992.       /y0 0 def
  2993.       /x1 0 def
  2994.       /y1 0 def
  2995.       /x2 0 def
  2996.       /y2 0 def
  2997.       /x3 0 def
  2998.       /y3 0 def
  2999.       0 5 dx 200 div Frequency mul
  3000.          { rand 50 mod 25 div 1 sub add
  3001.          x3 y3 moveto
  3002.          x2 y2 x1 y1 x0 y0 curveto
  3003.          dup rand 30 mod 15 div neg 2 sub
  3004.          2 copy
  3005.          /y0 exch def
  3006.          /x0 exch def
  3007.          lineto
  3008.          dup rand 50 mod 10 div 2.5 sub add rand 50 mod 10 div neg
  3009.          1 index rand 50 mod 10 div
  3010.          4 index rand 30 mod 15 div 2 add
  3011.          6 copy
  3012.          /y3 exch def
  3013.          /x3 exch def
  3014.          /y2 exch def
  3015.          /x2 exch def
  3016.          /y1 exch def
  3017.          /x1 exch def
  3018.          curveto
  3019.          pop
  3020.          closepath
  3021.          gsave
  3022.          rand DifGrey mod MinGrey add 100 div 1 exch sub setgray fill
  3023.          grestore
  3024.          0 setgray stroke
  3025.          } for
  3026.       0 -4 translate
  3027.       } repeat
  3028.    } bind def
  3029.  
  3030. %@Fill
  3031. /Text %Texto,5, Fuente=1, Carßcter=67, Frecuencia=4, Espaciado=100, GrisFondo=0
  3032.    {
  3033.    /BackGrey exch -1 100 InRange def
  3034.    /Spacing exch 30 300 InRange def
  3035.    /Frequency exch 1 50 InRange def
  3036.    /Character exch 33 255 InRange def
  3037.    /Font exch 1 35 InRange def
  3038.  
  3039.    /pntsize 100000 Frequency div Spacing div def
  3040.    Font  1 eq { /Times-Roman } if
  3041.    Font  2 eq { /Times-Italic } if
  3042.    Font  3 eq { /Times-Bold } if
  3043.    Font  4 eq { /Times-BoldItalic } if
  3044.    Font  5 eq { /Helvetica } if
  3045.    Font  6 eq { /Helvetica-Oblique } if
  3046.    Font  7 eq { /Helvetica-Bold } if
  3047.    Font  8 eq { /Helvetica-BoldOblique } if
  3048.    Font  9 eq { /Courier } if
  3049.    Font 10 eq { /Courier-Oblique } if
  3050.    Font 11 eq { /Courier-Bold } if
  3051.    Font 12 eq { /Courier-BoldOblique } if
  3052.    Font 13 eq { /Symbol } if
  3053.    Font 14 eq { /AvantGarde-Book } if
  3054.    Font 15 eq { /AvantGarde-BookOblique } if
  3055.    Font 16 eq { /AvantGarde-Demi } if
  3056.    Font 17 eq { /AvantGarde-DemiOblique } if
  3057.    Font 18 eq { /Bookman-Demi } if
  3058.    Font 19 eq { /Bookman-DemiItalic } if
  3059.    Font 20 eq { /Bookman-Light } if
  3060.    Font 21 eq { /Bookman-LightItalic } if
  3061.    Font 22 eq { /Helvetica-Narrow } if
  3062.    Font 23 eq { /Helvetica-Narrow-Bold } if
  3063.    Font 24 eq { /Helvetica-Narrow-BoldOblique } if
  3064.    Font 25 eq { /Helvetica-Narrow-Oblique } if
  3065.    Font 26 eq { /NewCenturySchlbk-Roman } if
  3066.    Font 27 eq { /NewCenturySchlbk-Bold } if
  3067.    Font 28 eq { /NewCenturySchlbk-Italic } if
  3068.    Font 29 eq { /NewCenturySchlbk-BoldItalic } if
  3069.    Font 30 eq { /Palatino-Roman } if
  3070.    Font 31 eq { /Palatino-Bold } if
  3071.    Font 32 eq { /Palatino-Italic } if
  3072.    Font 33 eq { /Palatino-BoldItalic } if
  3073.    Font 34 eq { /ZapfChancery-MediumItalic } if
  3074.    Font 35 eq { /ZapfDingbats } if
  3075.    findfont pntsize scalefont setfont
  3076.  
  3077.    /str 1 string def
  3078.    str 0 Character put
  3079.  
  3080.    /increment Spacing 100 div pntsize mul 2 mul def
  3081.  
  3082.    eoclip
  3083.    BackGrey 0 ge
  3084.       { BackGrey 100 div 1 exch sub setgray fill }
  3085.       { newpath } ifelse
  3086.  
  3087.    /Bbury Bbury pntsize add def
  3088.  
  3089.    0 setgray
  3090.    Bblly increment Bbury
  3091.      { Bbllx 1 index moveto
  3092.        { str show
  3093.          currentpoint increment 2 div add
  3094.          dup 3 index sub
  3095.          increment 2.1 div gt { increment sub } if
  3096.          1 index Bburx gt
  3097.          {pop pop pop exit} if
  3098.          moveto
  3099.        } loop
  3100.      } for
  3101.    } bind def
  3102.  
  3103. %@Fill
  3104. /Tiles %Mosaicos,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  3105.    {
  3106.    /BackgroundGray exch -1 100 InRange def
  3107.    /ForegroundGray exch 0 100 InRange def
  3108.    /Linewidth      exch 0 100 InRange def
  3109.    /Frequency      exch 2 100 InRange def
  3110.  
  3111.    /newfont 10 dict def
  3112.    newfont begin
  3113.  
  3114.    /FontMatrix [1  0  0
  3115.                 1  0  0] def
  3116.    /FontType 3 def
  3117.    /FontBBox [0 0 2 1] def
  3118.    /Encoding 256 array def
  3119.    0 1 255 {Encoding exch /.notdef put} for
  3120.  
  3121.    /BuildChar
  3122.      { 2  .5
  3123.        -0.1 -0.1 2.1 1.1
  3124.        setcachedevice
  3125.        pop begin
  3126.  
  3127.        0   0 moveto
  3128.        1.5 0 lineto
  3129.        1.75  0 .25 180 90 arcn
  3130.        1.75 .5 .25 -90 90 arc
  3131.        1.75  1 .25 270 180 arcn
  3132.        0   1 lineto
  3133.  
  3134.        Linewidth pntsize div setlinewidth
  3135.        stroke
  3136.  
  3137.        end
  3138.      } def
  3139.    end
  3140.  
  3141.    /pntsize 500 Frequency div def
  3142.  
  3143.    /FillFont newfont definefont pop
  3144.    /FillFont findfont pntsize scalefont setfont
  3145.  
  3146.    eoclip
  3147.    BackgroundGray 0 ge
  3148.       { BackgroundGray 100 div 1 exch sub setgray fill }
  3149.       { newpath } ifelse
  3150.  
  3151.    ForegroundGray 100 div 1 exch sub setgray
  3152.  
  3153.    Bblly pntsize Bbury
  3154.      { Bbllx 1 index moveto
  3155.        { (a) show
  3156.          currentpoint
  3157.          dup 3 index sub
  3158.          pntsize 2.1 div gt { pntsize sub } if
  3159.          1 index Bburx gt
  3160.          {pop pop pop exit} if
  3161.          moveto
  3162.        } loop
  3163.      } for
  3164.    } bind def
  3165.  
  3166. %@Fill
  3167. /TreeRings %AnillosDeArbol,5, DistMßxima=150, DistMφnima=0, AnchoLφnea=5, GrisFondo=0, Funci≤nAleatoria=0
  3168.    { srand
  3169.    /BackGrey exch -1 100 InRange def
  3170.    /LineWidth exch 0 100 InRange def
  3171.    /MinDist exch 0 500 InRange def
  3172.    /MaxDist exch MinDist 500 InRange MinDist wDstChck def
  3173.  
  3174.    eoclip
  3175.    BackGrey 0 ge
  3176.       { BackGrey 100 div 1 exch sub setgray fill }
  3177.       { newpath } ifelse
  3178.  
  3179.    /cx Bburx Bbllx add 2 div def
  3180.    /cy Bbury Bblly add 2 div def
  3181.    /pntsize MaxDist MinDist sub def
  3182.    /hyp Bburx Bbllx sub dup mul Bbury Bblly sub dup mul add sqrt def
  3183.  
  3184.    /wr 0 def
  3185.    0 setgray
  3186.    LineWidth setlinewidth
  3187.  
  3188.       {
  3189.       /wr rand pntsize mod MinDist add wr add def
  3190.       cx wr add  cy moveto
  3191.       cx cy wr 0 360 arc
  3192.       stroke
  3193.       wr hyp gt {exit} if
  3194.       } loop
  3195.    } bind def
  3196.  
  3197. %@Fill
  3198. /Triangle %Trißngulo,4, Frecuencia=8, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0
  3199.    {
  3200.    /BackgroundGray exch -1 100 InRange def
  3201.    /ForegroundGray exch 0 100 InRange def
  3202.    /Linewidth      exch 0 100 InRange def
  3203.    /Frequency      exch 2 100 InRange def
  3204.  
  3205.    /newfont 10 dict def
  3206.    newfont begin
  3207.  
  3208.    /FontMatrix  [ 1 3 sqrt div  0
  3209.                   0             1 3 sqrt div
  3210.                   0             0] def
  3211.    /FontType 3 def
  3212.    /FontBBox [0 0 1 3 sqrt] def
  3213.    /Encoding 256 array def
  3214.    0 1 255 {Encoding exch /.notdef put} for
  3215.  
  3216.    /BuildChar
  3217.      { 1  0
  3218.        -0.1 -0.1 1.1 3 sqrt 0.1 add
  3219.        setcachedevice
  3220.        pop begin
  3221.  
  3222.        0 0 moveto
  3223.        1 3 sqrt lineto
  3224.        0 3 sqrt lineto
  3225.        1 0 lineto
  3226.        closepath
  3227.  
  3228.        0 3 sqrt 2 div moveto
  3229.        1 3 sqrt 2 div lineto
  3230.  
  3231.        Linewidth pntsize div 3 sqrt mul setlinewidth
  3232.        stroke
  3233.  
  3234.       end
  3235.      } def
  3236.    end
  3237.  
  3238.    /pntsize 1732 Frequency div def
  3239.    /FillFont newfont definefont pop
  3240.    /FillFont findfont pntsize scalefont setfont
  3241.  
  3242.    eoclip
  3243.    BackgroundGray 0 ge
  3244.       { BackgroundGray 100 div 1 exch sub setgray fill }
  3245.       { newpath } ifelse
  3246.  
  3247.    ForegroundGray 100 div 1 exch sub setgray
  3248.  
  3249.    Bblly pntsize Bbury
  3250.      { Bbllx pntsize sub pntsize 3 sqrt div Bburx
  3251.        { 1 index moveto
  3252.        (a) show
  3253.        } for
  3254.      pop
  3255.      } for
  3256.    } bind def
  3257.  
  3258. %@Fill
  3259. /Waves %Ondas,5, Frecuencia=6, AnchoLφnea=5, Gris1erPlano=100, GrisFondo=0, Espaciado(%)=100
  3260.    {
  3261.    /Spacing        exch 30 300 InRange def
  3262.    /BackgroundGray exch -1 100 InRange def
  3263.    /ForegroundGray exch 0 100 InRange def
  3264.    /Linewidth      exch  0 100 InRange def
  3265.    /Frequency      exch  2 100 InRange def
  3266.  
  3267.    /newfont 10 dict def
  3268.    newfont begin
  3269.  
  3270.    /FontMatrix [1 84 div   0
  3271.                 0          1 84 div
  3272.                 0          0] def
  3273.    /FontType 3 def
  3274.    /FontBBox [37 56 111 114] def
  3275.    /Encoding 256 array def
  3276.    0 1 255 {Encoding exch /.notdef put} for
  3277.  
  3278.    /BuildChar
  3279.      { 74  0
  3280.        36.9 55.9 111.1 114.1
  3281.        setcachedevice
  3282.        pop begin
  3283.  
  3284.        1 1.5 scale
  3285.  
  3286.        37 38 moveto
  3287.        76 38 79 73 111 57 curveto
  3288.        80 60 80 38 111 38 curveto
  3289.  
  3290.        Linewidth pntsize div 84 mul setlinewidth
  3291.        stroke
  3292.  
  3293.       end
  3294.      } def
  3295.    end
  3296.  
  3297.    /pntsize 783 Frequency div def
  3298.  
  3299.    /FillFont newfont definefont pop
  3300.    /FillFont findfont pntsize scalefont setfont
  3301.  
  3302.    /Height pntsize Spacing 100 div mul def
  3303.  
  3304.    /Bbllx Bbllx Height sub def
  3305.    /Bblly Bblly Height sub def
  3306.    /Bburx Bburx Height add def
  3307.    /Bbury Bbury Height add def
  3308.  
  3309.    eoclip
  3310.    BackgroundGray 0 ge
  3311.       { BackgroundGray 100 div 1 exch sub setgray fill }
  3312.       { newpath } ifelse
  3313.  
  3314.    ForegroundGray 100 div 1 exch sub setgray
  3315.    Bblly Height Bbury
  3316.      { Bbllx exch moveto
  3317.        { (a) show
  3318.          currentpoint
  3319.          pop Bburx gt
  3320.          {exit} if
  3321.        } loop
  3322.      } for
  3323.    } bind def
  3324.  
  3325.